SerialPort的回车问题

时间:2017-02-11 18:13:16

标签: c# .net serial-port

我正在尝试与接受一些不同命令的实验室仪器进行通信。该仪器仅使用回车符来终止 - 没有换行。

当我使用RealTerm并根据需要设置连接时,我可以发送一个ASCII命令和一个CR字符。仪器提供正确的响应。

然而,当使用.NET的SerialPort对象时,C#中的\r似乎不一定正确,因为每当我发送它时,我的仪器都会给出与打印机超时/错误相关的错误代码(RS-232端口被视为“打印机”,但手册也指定了如何连接到PC)。

我确实已经验证我的端口的NewLine属性设置为\r。这是我尝试过的几件事:

_port.WriteLine(command); // error at the instrument once this executes.
_port.Write(command + _port.NewLine); // also error.
_port.Write(command); // executes without error, but next line errors:
_port.Write(_port.NewLine);

在C#中,RealTerm中的CR\r之间是否存在一些根本区别?或者可以在这里发挥其他作用吗?

1 个答案:

答案 0 :(得分:0)

对于我的用例,我想到了这个问题 - 我需要设置DtrEnable = true;来阻止错误。我确实得到了一个程序(称为" AccessPort")来成功运行并监视我的端口。虽然我的代码和RealTerm都写了相同的字节,但我注意到驱动程序配置中的位掩码有点不同。即使我在RealTerm中禁用了所有握手和流量控制,它仍然启用DTR,在浏览驱动程序的头文件后确认。在我的代码中做同样的事情解决了这个问题。