C# 使用SerialPort的回车问题

C# 使用SerialPort的回车问题,c#,.net,serial-port,C#,.net,Serial Port,我正在尝试与一台实验室仪器进行通信,它接受一些不同的命令。该仪器仅使用一个回车符来终止——无换行 当我使用RealTerm并根据需要设置连接时,我可以发送一个ASCII命令和一个CR字符。仪器提供正确的响应 然而,当使用.NET的SerialPort对象时,C#中的\r似乎并不一定正确,因为每当我发送它时,我的仪器都会给出一个与打印机超时/错误相关的错误代码(RS-232端口被视为“打印机”,但手册也规定了如何连接到PC) 我已经确认我的端口的换行符属性设置为\r。以下是我尝试过的几件事: _p

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

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

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

我已经确认我的端口的
换行符
属性设置为
\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);

RealTerm中的
CR
与C#中的
\r
之间是否存在一些基本的区别?或者这里还会有其他东西发挥作用吗?

对于我的用例,我已经弄明白了——我需要设置
DtrEnable=true以停止错误。我确实得到了一个程序(称为“AccessPort”)来成功地运行并监视我的端口。虽然我的代码和RealTerm都在编写相同的字节,但我注意到驱动程序配置中的位掩码有点不同。尽管我在RealTerm中禁用了所有握手和流量控制,但它仍然在启用DTR,这是在浏览驱动程序的头文件后确认的。在我的代码中执行同样的操作解决了这个问题。

对于我的用例,我已经解决了这个问题——我需要设置
DtrEnable=true以停止错误。我确实得到了一个程序(称为“AccessPort”)来成功地运行并监视我的端口。虽然我的代码和RealTerm都在编写相同的字节,但我注意到驱动程序配置中的位掩码有点不同。尽管我在RealTerm中禁用了所有握手和流量控制,但它仍然在启用DTR,这是在浏览驱动程序的头文件后确认的。在我的代码中执行相同的操作修复了问题。

您是否尝试配置_port.NewLine,即_port.NewLine=“\r”?运行类似于比较好的手动命令与代码发送的命令的工具,区别在于问题所在。RealTerm之类的程序会将按Enter键转换为任何所需的字符。如为连接配置的。像那些你还没有尝试过的并且很常见的,像“\n”和“\r\n”@HansPassant,我在RealTerm中尝试过不同的组合,仪器不太关心线路馈送。我还没有在我的代码中尝试过同样的操作,因为我认为这是一样的,但我会尝试的。@AlexK。我曾经尝试过portmon和一些类似的实用程序,但都无法正常工作。只是一些隐晦的错误消息。您是否尝试配置_port.NewLine,即_port.NewLine=“\r”?运行类似于比较好的手动命令和代码发送内容的工具,区别在于问题所在。RealTerm之类的程序会将按Enter键转换为任何所需的字符。如为连接配置的。像那些你还没有尝试过的并且很常见的,像“\n”和“\r\n”@HansPassant,我在RealTerm中尝试过不同的组合,仪器不太关心线路馈送。我还没有在我的代码中尝试过同样的操作,因为我认为这是一样的,但我会尝试的。@AlexK。我曾经尝试过portmon和一些类似的实用程序,但都无法正常工作。只是一些神秘的错误信息。