我有一个 GSM 调制解调器,它有一个与之关联的特定命令集。我想使用我的 c# 代码调用这些命令。是否有可能做到这一点?
GSM 调制解调器型号:MOD 9001 BENQ GSM/GPRS 调制解调器
我没有任何库可以与此调制解调器交互
在不知道您提到的特定调制解调器的任何细节的情况下,与调制解调器通信的一般方法是打开串行端口连接并以纯文本方式与调制解调器通信。通常使用Hayes 命令集的一些变体。对于 .NET,您可能需要参考System.IO.Ports.SerialPort
(请参阅MSDN)。连接参数(波特率、数据位、停止位、奇偶校验、流控制)取决于调制解调器,但一个好的开始是尝试 57600、8 个数据位、1 个停止位、无奇偶校验和硬件流控制;这些是典型参数。端口的名称很大程度上取决于它如何连接到您的系统,但如果您不知道的话,一个好地方是 COM 端口下的 Windows 设备管理器。
我看到这个问题相当老了,但是出于同样的原因与我自己的调制解调器作斗争。我正在使用 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"
到调制解调器的所有命令的末尾。我花了一天的时间才知道为什么我的调制解调器没有响应我的命令... :-)
serialPort1 = new EnhancedSerialPort();
serialPort1.PortName ="COM 11"; // check it in your case
serialPort1.BaudRate = 115200; //suggested
recievingBuffer = "";
serialPort1.ReadTimeout = 400;
serialPort1.WriteTimeout = 400;
注意来电:-
接收缓冲区 += serialPort1.ReadExisting();
激活您的 GSM 发送以下命令:-
serialPort1.Write("AT\r\n");