我正在尝试与接受一些不同命令的实验室仪器进行通信。该仪器仅使用回车符来终止 - 没有换行。
当我使用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
之间是否存在一些根本区别?或者可以在这里发挥其他作用吗?
答案 0 :(得分:0)
对于我的用例,我想到了这个问题 - 我需要设置DtrEnable = true;
来阻止错误。我确实得到了一个程序(称为" AccessPort")来成功运行并监视我的端口。虽然我的代码和RealTerm都写了相同的字节,但我注意到驱动程序配置中的位掩码有点不同。即使我在RealTerm中禁用了所有握手和流量控制,它仍然启用DTR,在浏览驱动程序的头文件后确认。在我的代码中做同样的事情解决了这个问题。