我正在使用我的MULTIBAND 900E 1800 WAVECOM MODEM。我使用.Net C#创建了一个项目,通过AT-Command与我的调制解调器进行通信。但我没有从调制解调器获得任何人类可读的响应。回应就像那样 -
'P&ØPP&ØĐPØØPØØþRÏĐÿÔ'
我无法解码响应,以便我能理解。
我试过通过改变串口编码使用:
使用不同的编码,响应会发生变化,但仍然是不可读的字符。
此外,我试过改变CSCS:
使用不同的CSCS,响应会发生变化,但仍然是不可读的字符。
port = new SerialPort(SERIAL_PORT_NAME)
{
BaudRate = 9600,
DataBits = 8,
Parity = Parity.None,
StopBits = StopBits.One
};
port.Parity = Parity.None;
port.ReadTimeout = 300;
port.WriteTimeout = 300;
//port.Encoding = Encoding.UTF8;
//port.Encoding = Encoding.GetEncoding("ISO-8859-1");
port.DtrEnable = true;
port.RtsEnable = true;
port.Open();
//port.WriteLine("AT+CSCS=GSM");
//response = port.ReadExisting();
port.WriteLine("AT");
response = port.ReadExisting();
如果我写AT调制解调器应该响应OK。当我尝试使用https://m2msupport.net/m2msupport/ussd-how-to-send-ussd-short-codes-with-at-command/测试我的调制解调器时,这正好发生了。但是我发现使用.Net制作的每个应用程序或示例代码都有相同的问题。
据我所知,你可以使用一个公共终端发送AT命令(它是否正确?)但你没有以编程方式进行。
我可以回答一些问题:1)波特率是否正确? 9600是一种不常见的波特率。通常使用115200 2)注意硬件流量控制。在AT接口中,它通常被禁用。无论如何,程序中的设置必须与调制解调器中的设置相匹配
在代码中选择设置之前,请确认(1)和(2)终端。
3)AT命令实际上在char(ASCII 0x0D)之后发送到解析器。你确定“WriteLine”被终止了吗?可能使用“Port.Write(”AT \ r“)”将是一个更好的选择。