我想遍歷可用端口: 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. 無法連接到USB串行端口(GSM調制解調器)
- 2. GSM調制解調器庫
- 3. 以編程方式讀取GSM調制解調器端口號
- 4. python中的gsm調制解調器
- 5. 如果在GSM調制解調器
- 6. E160E USB GSM調制解調器不斷將數據轉儲到串行端口
- 7. 在C#中通過GSM調制解調器接收SMS#
- 8. 發送短信接口GSM調制解調器在PHP
- 9. 得到任何地方的GSM調制解調器是用C#
- 10. 將調制解調器從GSM調制解調器傳輸到PC
- 11. 爲SMS實施GSM調制解調器
- 12. 管理GSM調制解調器響應
- 13. GSM調制解調器Wavecom 900
- 14. GSM USSD調制解調器請求
- 15. 批量短信gsm調制解調器
- 16. GSM調制解調器發送SMS
- 17. 通過GSM調制解調器
- 18. GSM調制解調器提交速率
- 19. Android手機爲GSM調制解調器
- 20. 使用GSM調制解調器
- 21. Wavecom GSM調制解調器作爲TCP客戶端
- 22. 通過GSM調制解調器通過串口進行通信
- 23. 如何檢測屬於gsm/3g調制解調器的tty是數據端口還是控制端口?
- 24. 尋找一個GSM調制解調器建議
- 25. 檢測來自GSM調制解調器的來電c#
- 26. 如何從C++代碼與GSM調制解調器通信
- 27. 用C#從GSM調制解調器讀短信
- 28. C語言編程GSM調制解調器#
- 29. 使用asp.net C通過GSM調制解調器發送SMS#
- 30. 用於M2M監督的C#和GSM調制解調器?
我想你知道如何使用這個設備(我不知道)溝通 - 應該有一些簡單的操作(比如,要求設備版本/序列號)您可以發送到每一個端口找設備 – Carsten
我可以將AT命令發送到未連接到調制解調器的端口嗎? – Dohamsg
當然 - 爲什麼不,你不會看到任何反應,恕我直言,所有 – Carsten