在 Tera Term 中,我通过 USB 连接到串行设备(启动时选择单选按钮“串行”和正确的端口)。连接后,我仅将默认速度更改为 115200(在设置=>串行端口中)。
之后,tera term 要求我填写如下命令:
命令>
我填写设备特定命令。在本例中,它是“PC”,我收到预期的响应,即。“ABC”
现在我正尝试在 C# 中做同样的事情。不幸的是,我得到的响应始终与我实际输入的命令相同。
因此,如果我输入“PC”,则响应是“PC”,但我期望“ABC”。其他命令也有同样的问题。命令 ”?” 回应“?” 而我期待的是“CBA”。
如果我输入错误的命令 => 然后我会收到消息“未知命令”所以我怀疑设备实际上获得了正确的命令。
我正在使用以下代码:
SerialPort COMport = new SerialPort(Port_Name, Baud_Rate); //Create a new SerialPort Object (defaullt setting -> 8N1)
COMport.DataReceived += new SerialDataReceivedEventHandler(sPort_dataReceived);
COMport.ErrorReceived += new SerialErrorReceivedEventHandler(sPort_ErrorReceived);
COMport.BaudRate = 115200;
COMport.Parity = Parity.None;
COMport.DataBits = 8;
COMport.StopBits = StopBits.One;
COMport.RtsEnable = true;
COMport.Handshake = Handshake.None;
COMport.Open();
COMport.WriteLine(Data);
Thread.Sleep(1000); // Just discovered after a lot of testing that this is necessary to read the response before the Comport closes
COMport.Close();
然后我执行以下操作:
private void sPort_dataReceived(object sender, SerialDataReceivedEventArgs e)
{
SerialPort sp = (SerialPort)sender;
string indata = sp.ReadExisting();
Console.WriteLine("Data Received:");
Console.Write(indata);
MessageBox.Show(indata);
}
我尝试过不同的事情,但我无法让它发挥作用。希望这是因为我对此很陌生。我以前从未使用过 Tera term。
翻阅古今
相关分类