无法理解AT命令响应

时间:2019-04-02 18:19:43

标签: c# gsm at-command modem

我正在使用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制作的每个应用程序或示例代码都存在相同的问题。

1 个答案:

答案 0 :(得分:0)

据我了解,您可以使用公共终端发送AT命令(对吗?),但是您无法通过编程方式执行。

我可以回答一些问题: 1)波特率正确吗? 9600是不常见的波特率。通常使用115200 2)注意硬件流量控制。在AT接口中,通常将其禁用。无论如何,程序中的设置必须与调制解调器中的设置匹配

在代码中选择设置之前,请先在终端上验证(1)和(2)。

3)AT命令实际上在char(ASCII 0x0D)之后发送到解析器。您确定“ WriteLine”由而不是终止吗?可能使用“ Port.Write(“ AT \ r”)“是一个更好的选择。