我正在尝试使用连接到 COM 端口的 GSM 调制解调器发送和接收数据。这是我的代码的重要部分:
SerialPort sp = new SerialPort();
sp.PortName = "COM1";
sp.BaudRate = 9600;
sp.DataBits = 8;
sp.Parity = Parity.None;
sp.StopBits = StopBits.One;
sp.ReadTimeout = 5000;
sp.Open();
if (sp.IsOpen)
{
Console.WriteLine(sp.PortName + " is open");
Console.WriteLine("Trying to write data");
sp.Write("AT");
Console.WriteLine("Data has been sent");
Console.WriteLine("Trying to read data");
char[] read = new char[200];
sp.Read(read, 0, 20);
foreach (char chr in read)
{
Console.Write(chr);
}
Console.WriteLine();
}
我没有收到任何错误,但 GSM 设备只是将我发给他的任何东西都发回给我。在这种情况下,AT。如果我发送“BOO”,他会发回“BOO”(虽然有时我只收到第一个字母,但我认为这是因为我读取数据的方式,应该在单独的线程中不?我可以轻松做到这一点之后)。
当我给他发“AT”时,我期待他给我发回“OK”。
无论我发送给他什么,设备都会将我发送回去,这有什么解释。我在想可能是端口通信设置不正确,我实际上没有到达设备,只是将其发送回给自己?