我想遍历可用端口:
System.IO.Ports.SerialPort.GetPortNames()
查找gsm调制解调器是否使用了端口。
任何想法,请。

最佳答案

我在应用程序中为一项类似任务所做的工作:

  • 要检查调制解调器是否连接到特定端口,可以将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 -开启echo
  • ATI -获取调制解调器详细信息
  • ATI3 -获取扩展的调制解调器详细信息(并非所有调制解调器都支持此命令)
  • 关于c# - 在C#中找到GSM调制解调器端口,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/7139035/

    10-10 19:12