【问题标题】:Accessing GSM Modem in C#在 C# 中访问 GSM 调制解调器
【发布时间】:2009-08-31 05:46:39
【问题描述】:

我有一个 GSM 调制解调器,它有一个与之关联的特定命令集。我想使用我的 c# 代码调用这些命令。可以这样做吗?

GSM 调制解调器型号:MOD 9001 BENQ GSM/GPRS 调制解调器

我没有任何库可以与此调制解调器交互

【问题讨论】:

  • 您能提供更多细节吗?具体来说是什么 GSM 型号(品牌/型号),通过代码(.NET 库/COM 互操作)等有哪些接口。

标签: c# gsm


【解决方案1】:

在不知道您提到的特定调制解调器的任何细节的情况下,与调制解调器通信的一般方法是打开串行端口连接并以纯文本方式与调制解调器通信。通常使用Hayes command set 的一些变体。对于 .NET,您可能需要参考 System.IO.Ports.SerialPort(请参阅 MSDN)。连接参数(波特率、数据位、停止位、奇偶校验、流控制)取决于调制解调器,但一个好的开始是尝试 57600、8 个数据位、1 个停止位、无奇偶校验和硬件流控制;这些是典型参数。端口的名称很大程度上取决于它如何连接到您的系统,但如果您不知道的话,一个好地方是 COM 端口下的 Windows 设备管理器。

【讨论】:

    【解决方案2】:

    我看到这个问题相当老了,但是出于同样的原因与我自己的调制解调器打架。我正在使用 C# atm 访问我自己的调制解调器。

    我连接到调制解调器的方式如System.IO.Ports.SerialPort 之前所述。您必须告诉它要连接到哪个 COM 端口。

    假设您已安装调制解调器的标准驱动程序并且它已连接到计算机,您可以使用以下方法获取打开的 COM 端口列表:

    string[] com_ports = SerialPort.GetPortNames();
    

    假设您想从上面的阵列连接到第一个 COM 端口。打开一个端口很简单:

    SerialPort port = new SerialPort();
    port.portname = com_ports[0];
    // ... Insert other port parameters
    port.Open();
    

    向调制解调器写入命令很简单:

    port.write("some command");
    

    响应又回来了:

    String response = port.ReadExisting();
    

    .. 请记住将"\r" 添加到调制解调器的所有命令的末尾。我花了一天的时间才知道为什么我的调制解调器没有响应我的命令...:-)

    【讨论】:

      【解决方案3】:
          serialPort1 = new EnhancedSerialPort();
          serialPort1.PortName ="COM 11";  // check it in your case
          serialPort1.BaudRate = 115200; //suggested
          recievingBuffer = "";
          serialPort1.ReadTimeout = 400;
          serialPort1.WriteTimeout = 400;
      

      通知来电:-

      recievingBuffer += serialPort1.ReadExisting();

      要激活您的 GSM,请发送以下命令:-

      serialPort1.Write("AT\r\n");

      【讨论】:

        猜你喜欢
        • 2011-09-29
        • 2011-10-31
        • 2023-04-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-11-28
        • 1970-01-01
        相关资源
        最近更新 更多