我对以下链接有类似的问题。 How to change baud rate without closing the connection?。但是我用C#代替Java。我从波特率300开始。然后握手后,我必须将波特率更改为4800。我向设备发送命令以执行此操作。我更改了串行端口的波特率。之后,我将永远无法继续与设备进行通信。 (如果我停留在300波特率下并向设备发送300波特率的命令,我可以继续通信)

我有一个第三方软件,该软件也可以从该设备读取数据。该软件正在运行时,我正在监听端口。它会发送与设备相同的命令。它发送命令以将4800波特设置为设备,并可以从设备获取答案。在更改波特率期间,它不会关闭或重新打开端口。我必须做同样的事情。但是,当我发送命令更改为4800波特时,我从未从该设备得到任何答复。

我在等你的答案。
谢谢,
菲达

这是串口监控程序的输出
由进程“ ReadY.vshost.exe”打开的端口(PID:2608)

01 42 30 03 71 .B0.q

答案:09.08.2011 10:55:40.81864(+0.2656秒)

06。

要求:09.08.2011 10:55:41.06864(+1.2500秒)

2F 3F 31 31 39 39 39 30 30 34 21 0D 0A /?11999004!..

回答:09.08.2011 10:55:41.58464(+0.5156秒)

2F 53 54 52 34 5F 42 53 4D 31 33 31 0D 0A / STR4_BSM131 ..

要求:09.08.2011 10:55:42.31864(+0.2969秒)

06 30 34 31 0D 0A .041 ..

最佳答案

以我的经验,波特率开关需要关闭并重新打开串行端口硬件:我建议尝试这样做。发送波特率切换命令,然后关闭端口,设置波特率,然后重新打开端口。打开/关闭端口对另一侧的设备应该是透明的(除非您使用的是CTS / RTS / DTR / DSR线)。

关于c# - 在不关闭连接的情况下更改C#中的波特率,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/6992530/

10-12 05:08