在没有关闭连接的情况下更改C#中的波特率

我对以下链接有类似的问题。 如何在不关闭连接的情况下更改波特率? 。 但我使用C#代替java。 我开始使用波特率300.然后握手后我必须将波特率更改为4800.我向设备发送命令来执行此操作。 我改变了我的serialport的波特率。 之后,我永远无法继续与设备通信。 (如果我保持300波特率并向设备发送300波特命令,我可以继续通信)

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

我在等你的答案。 谢谢,FERDA

这是由进程“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线路)。

要更改设备的波特率,请按以下步骤操作。 例如:以波特率1200开始通信。

  1. 发送数据命令以将波特率更改为1200。
  2. 收到设备的确认。
  3. 如果ACK正确,则设置Port.BaudRate=1200

接下来,您要将波特率更改为4800,然后按照以下步骤操作

  1. 发送数据命令以将波特率更改为4800。
  2. 收到设备的确认。
  3. 如果ACK正确,则设置Port.BaudRate=4800

注意:从控制器设备接收ACK后,更改Port.BaudRate。 通信将以先前设置的BaudRate开始。