我正在使用MULTIBAND 900E 1800 WAVECOM调制解调器。我已经使用.Net C#创建了一个项目,以通过AT-Command与调制解调器进行通信。但是我没有从调制解调器得到任何人类可读的响应。响应就是这样-
'P&ØPP&ØÐPØØPØØþRÏÐÿÔ'
我无法解码响应,以便我能理解。
我尝试通过以下方式更改串行端口编码:
port.Encoding = Encoding.ASCII;
port.Encoding = Encoding.UTF8;
port.Encoding = Encoding.GetEncoding(“ ISO-8859-1”);
使用不同的编码,响应会发生变化,但仍然是不可读的字符。
此外,我尝试通过更改CSCS:
AT + CSCS = GSM
AT + CSCS = UCS2
AT + CSCS = HEX
AT + CSCS =“ 8859-1”
使用不同的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制作的每个应用程序或示例代码都存在相同的问题。
答案 0 :(得分:0)
据我了解,您可以使用公共终端发送AT命令(对吗?),但是您无法通过编程方式执行。
我可以回答一些问题: 1)波特率正确吗? 9600是不常见的波特率。通常使用115200 2)注意硬件流量控制。在AT接口中,通常将其禁用。无论如何,程序中的设置必须与调制解调器中的设置匹配
在代码中选择设置之前,请先在终端上验证(1)和(2)。
3)AT命令实际上在char(ASCII 0x0D)之后发送到解析器。您确定“ WriteLine”由而不是终止吗?可能使用“ Port.Write(“ AT \ r”)“是一个更好的选择。