Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/299.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 无法理解AT命令响应_C#_Gsm_At Command_Modem - Fatal编程技术网

C# 无法理解AT命令响应

C# 无法理解AT命令响应,c#,gsm,at-command,modem,C#,Gsm,At Command,Modem,我正在使用我的多波段900E 1800 WAVECOM调制解调器。我使用.Net C#创建了一个项目,通过AT命令与调制解调器通信。但我没有从调制解调器得到任何人类可读的响应。回答是这样的- 'p&p&pØpØRÏRÐ ÿÔ' 我无法解码响应以便理解 我尝试使用以下方法更改串行端口编码: port.Encoding=Encoding.ASCII port.Encoding=Encoding.UTF8 port.Encoding=Encoding.GetEncoding(“ISO-8859-

我正在使用我的多波段900E 1800 WAVECOM调制解调器。我使用.Net C#创建了一个项目,通过AT命令与调制解调器通信。但我没有从调制解调器得到任何人类可读的响应。回答是这样的-

'p&p&pØpØRÏRÐ ÿÔ'

我无法解码响应以便理解

我尝试使用以下方法更改串行端口编码:

  • port.Encoding=Encoding.ASCII

  • port.Encoding=Encoding.UTF8

  • port.Encoding=Encoding.GetEncoding(“ISO-8859-1”)

使用不同的编码,响应会发生更改,但仍然是无法读取的字符

  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();
此外,我还尝试通过更改CSC:

  • AT+CSCS=GSM

  • AT+CSCS=UCS2

  • AT+CSCS=十六进制

  • AT+CSCS=“8859-1”

使用不同的CSC时,响应会发生更改,但仍然是无法读取的字符

  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();

如果我在调制解调器上写入,则响应正常。这正是我尝试使用测试调制解调器时发生的情况。但我发现使用.Net生成的每一个应用程序或示例代码都有相同的问题。

据我所知,您可以使用公共终端发送AT命令,但无法通过编程实现

我的建议如下:

  • 验证您使用的波特率是否正确。9600是一种罕见的波特率。通常使用115200
  • 注意硬件流程控制。在AT接口中,它通常被禁用。无论如何,程序中的设置必须与调制解调器中的设置相匹配
  • 在代码中选择设置之前,请使用终端验证(1)和(2)

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