如何解决我正在向C#中的串行COM端口发送命令,但没有取回数据,但是当我使用腻子时,我会得到数据-我在做什么错?
| 我有一个C#应用程序,我正在编写该应用程序以尝试从串行设备中自动提取数据。就像我的问题的标题所说的那样,我在Putty中尝试了完全相同的命令,并获得了数据。有人可以告诉我我错过了什么,以便我可以使用C#应用程序获取相同的数据吗? 基本上,我需要使用速度/波特率为57600的COM6,并发送不带引号\“ UH \”的命令。应该为我提供几行文本数据,这些数据似乎仅适用于Putty。 作为快速测试,我将其组合在一起:private void SerialPort serialPort = new SerialPort();
private void getHistory_Click(object sender,EventArgs e)
{
serialPort.DataReceived += new SerialDataReceivedEventHandler(serialPort_DataReceived);
serialPort.PortName = \"COM6\";
serialPort.BaudRate = 57600;
serialPort.Open();
if (serialPort.IsOpen())
{
serialPort.Write(\"UH\");
}
}
private void serialPort_DataReceived(object sender,SerialDataReceivedEventArgs e)
{
string result = serialPort.ReadExisting();
Invoke(new MethodInvoker(delegate{ textbox1.AppendText(result); }));
}
虽然确实触发了DataReceived事件,但是它仅返回我发送的\“ UH \”,没有其他数据。任何有关此问题的帮助将不胜感激!
贾斯汀
解决方法
好吧,如果没有有关该设备的更多细节,很难确定,但是有两件事要引起注意:
首先,设备需要什么通讯协议?您已经设置了波特率,但是没有提及数据位,奇偶校验或停止位。我认为.NET串行端口类默认为8,N,1。如果您的设备相同,则应该没问题。如果不是,那么它将不起作用。
其次,设备是否要求对数据进行任何形式的终结处理以定义完整的数据包?通常,这可以是将发送的数据附加回车符和换行符(0x0D和0x0A),也可以是STX前缀(0x02)和ETX后缀(0x03)。
设备响应的任何消息也可能采用相同的格式。
我不知道Putty的工作原理,但请检查设置,看看它是否在您输入的消息和协议中附加了任何内容。超级终端也这样做,因此您也可以对此进行测试。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。