我有一个GSM调制解调器,它有一个与之关联的特定命令集。我想使用我的c#代码调用这些命令。有可能这样做吗?
GSM调制解调器型号:MOD 9001 BENQ GSM / GPRS调制解调器
我没有任何库与此调制解调器进行交互
答案 0 :(得分:1)
在不知道您提到的特定调制解调器的任何细节的情况下,与调制解调器通信的一般方法是打开串行端口连接并以纯文本形式与调制解调器通信。通常使用Hayes command set的某些变体。对于.NET,您可能需要引用System.IO.Ports.SerialPort
(请参阅MSDN)。连接参数(波特率,数据位,停止位,奇偶校验,流量控制)取决于调制解调器,但一个良好的开端是尝试57600,8个数据位,1个停止位,无奇偶校验和硬件流控制;那些是典型的参数。端口的名称在很大程度上取决于它与系统的连接方式,但如果您不知道,则可以查看COM端口下的Windows设备管理器。
答案 1 :(得分:1)
我看到这个问题相当陈旧,但是出于同样的原因与我自己的调制解调器打架。我正在使用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"
添加到调制解调器的所有命令的末尾。我找了一天让我知道,为什么 - 为什么我的调制解调器没有响应我的命令......: - )
答案 2 :(得分:0)
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&#34);