我想遍历可用端口: System.IO.Ports.SerialPort.GetPortNames() 查找gsm调制解调器是否使用端口。 请任何想法。在c#中找到gsm调制解调器端口#
7
A
回答
6
我在程序做了什么了一个类似的任务:
要检查调制解调器连接到特定的端口,你可以发送AT命令到该端口。下面 这个功能,如果我们找到了一个调制解调器当前的COM端口返回true:
private bool CheckExistingModemOnComPort(SerialPort serialPort) { if ((serialPort == null) || !serialPort.IsOpen) return false; // Commands for modem checking string[] modemCommands = new string[] { "AT", // Check connected modem. After 'AT' command some modems autobaud their speed. "ATQ0" }; // Switch on confirmations serialPort.DtrEnable = true; // Set Data Terminal Ready (DTR) signal serialPort.RtsEnable = true; // Set Request to Send (RTS) signal string answer = ""; bool retOk = false; for (int rtsInd = 0; rtsInd < 2; rtsInd++) { foreach (string command in modemCommands) { serialPort.Write(command + serialPort.NewLine); retOk = false; answer = ""; int timeout = (command == "AT") ? 10 : 20; // Waiting for response 1-2 sec for (int i = 0; i < timeout; i++) { Thread.Sleep(100); answer += serialPort.ReadExisting(); if (answer.IndexOf("OK") >= 0) { retOk = true; break; } } } // If got responses, we found a modem if (retOk) return true; // Trying to execute the commands without RTS serialPort.RtsEnable = false; } return false; }
在下一阶段,我们可以从调制解调器收集一些数据。 我用下面的命令:
- ATQ0 - 开关上确认(接收对每个请求OK)
- ATE0 - 交换机上回声
- ATI - 获得调制解调器细节
- ATI3 - 获得扩展调制解调器详细信息(并非所有调制解调器都支持此命令)
+0
我无法获得此答案 –
0
// Check each Availble COM port
foreach (string l_sport in l_available_ports)
{
GlobalVars.g_serialport = GlobalFunc.OpenPort(l_sport, Convert.ToInt32(this.cboBaudRate.Text), Convert.ToInt32(this.cboDataBits.Text), Convert.ToInt32(this.txtReadTimeOut.Text), Convert.ToInt32(this.txtWriteTimeOut.Text));
if (GlobalVars.g_serialport.IsOpen)
{
GlobalVars.g_serialport.WriteLine("AT\r");
Thread.Sleep(500);
string l_response = GlobalVars.g_serialport.ReadExisting();
if (l_response.IndexOf("OK") >= 0)
{
GlobalVars.g_serialport.WriteLine("AT+CMGF=1\r");
Thread.Sleep(500);
string l_response1 = GlobalVars.g_serialport.ReadExisting();
if (l_response1.IndexOf("OK") >= 0)
{
GlobalVars.g_PhoneNo = txt_PhNum.Text;
MessageBox.Show("Connected Successfully", "Connection", MessageBoxButtons.OK, MessageBoxIcon.Information);
lblConnectionStatus.Text = "Phone Connected Successfully.";
btnOK.Enabled = false;
btnDisconnect.Enabled = true;
GlobalVars.g_serialport.WriteLine("AT+CGSN\r");
Thread.Sleep(500);
string l_imei = GlobalVars.g_serialport.ReadExisting();
Console.WriteLine("Modem IMEI:" + l_imei);
if (l_imei.IndexOf("OK", 1) > 0)
{
l_imei = l_imei.Replace("AT+CGSN\r\r\n", null);
l_imei = l_imei.Replace("\r\n\r\nOK\r\n", null);
lbl_ModemIMEI.Text = l_imei;
}
else
{
lblConnectionStatus.Text = "Phone Connected Successfully. Error reading IMEI.";
}
EnableSMSNotification(GlobalVars.g_serialport);
break;
}
else
{
Console.WriteLine("No AT+CMGF cmd response");
}
}
else
{
Console.WriteLine("No AT cmd response");
}
}
else
{
Console.WriteLine("No Phone At:" + l_sport);
}
}
相关问题
- 1. GSM调制解调器库
- 2. python中的gsm调制解调器
- 3. E160E USB GSM调制解调器不断将数据转储到串行端口
- 4. 发送短信接口GSM调制解调器在PHP
- 5. 为SMS实施GSM调制解调器
- 6. GSM调制解调器提交速率
- 7. 批量短信gsm调制解调器
- 8. Android手机为GSM调制解调器
- 9. GSM调制解调器Wavecom 900
- 10. 使用GSM调制解调器
- 11. GSM USSD调制解调器请求
- 12. Wavecom GSM调制解调器作为TCP客户端
- 13. 通过GSM调制解调器通过串口进行通信
- 14. 如何检测属于gsm/3g调制解调器的tty是数据端口还是控制端口?
- 15. 寻找一个GSM调制解调器建议
- 16. 用C#从GSM调制解调器读短信
- 17. 用于M2M监督的C#和GSM调制解调器?
- 18. 检测来自GSM调制解调器的来电c#
- 19. Objective-C通过GSM调制解调器发送短信
- 20. 在Python中使用PySerial与GSM调制解调器通信
- 21. GSM调制解调器不会在+ cmgl命令中响应
- 22. GSM调制解调器可以得到什么信息?
- 23. 用USART2发送AT指令到GSM调制解调器[嵌入式C]
- 24. 使用AT命令调试GSM调制解调器
- 25. 通过GSM调制解调器下载二进制文件
- 26. 是否可以检测到插入USB端口的GSM调制解调器(HUAWEI E160)的来电?
- 27. 自动检测哪个Com端口使用Java连接到USB GSM调制解调器
- 28. 连接外部GSM调制解调器与Android模拟器?
- 29. Arduino GSM调制解调器与服务器的GPRS通信
- 30. 如何读取目标c中的GSM调制解调器消息?
我想你知道如何使用这个设备(我不知道)沟通 - 应该有一些简单的操作(比如,要求设备版本/序列号)您可以发送到每一个端口找设备 – Carsten
我可以将AT命令发送到未连接到调制解调器的端口吗? – Dohamsg
当然 - 为什么不,你不会看到任何反应,恕我直言,所有 – Carsten