System.IO.Ports.SerialPort的行为与PuTTY不同

时间:2017-08-11 11:05:34

标签: c# .net serial-port putty at-command

我最近购买了一个调制解调器,它通过USB连接并在操作系统中显示为串口设备:COM19

为确保调制解调器正常,我首先尝试在串行模式下使用PuTTY。从那里,我发出AT命令和从调制解调器接收响应没有问题。根据PuTTY配置,我控制本地串行线路的默认选项是(当时):

  • 速度(波特):9600
  • 数据位:8
  • 停止位:1
  • 奇偶校验:无
  • 流量控制:XON / XOFF

这是我在PuTTY中看到的内容(当我输入AT命令时):

AT
OK

^BOOT:30645964,0,0,0,75

但是,当我尝试从.NET访问相同的COM端口(而不是在运行PuTTY的同时)时,我从未收到“OK”响应。我仍然收到(似乎是什么)回声,以及来自调制解调器的偶尔未经请求的消息,所以我可以看到我已连接到正确的设备。有时调制解调器将使用“ERROR”响应格式错误的命令,但从不“OK”。这是我初始化COM端口的C#片段:

var commandPort = new SerialPort(portName, 9600, Parity.None, 8, StopBits.One);
commandPort.DataReceived += CommandPort_DataReceived;
commandPort.Handshake = Handshake.XOnXOff;
commandPort.Open();

commandPort.Write("AT\n");
for (var i = 0; i < 30; i++)
{
    Thread.Sleep(1000);
}

这是事件处理程序:

private static void CommandPort_DataReceived(object sender, SerialDataReceivedEventArgs e)
{
    Console.Write(((SerialPort)sender).ReadExisting());
}

这是打印回C#应用程序控制台的内容(请注意,我没有明确地将命令写入控制台,它是由CommandPort_DataReceived事件处理程序添加的):

AT

^BOOT:30645964,0,0,0,75

.NET应用程序发出的任何AT命令都不执行任何操作,尽管它们在PuTTY中的等价物能够查询调制解调器状态,拨打电话等。我做错了什么?

0 个答案:

没有答案