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

时间:2011-08-09 07:06:02

标签: c# serial-port baud-rate

我对以下链接有类似的问题。 How to change baud rate without closing the connection?。但我使用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 ..

2 个答案:

答案 0 :(得分:2)

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

答案 1 :(得分:1)

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

  1. 发送数据命令以将波特率更改为1200。
  2. 收到设备的确认。
  3. 如果ACK正确,请设置Port.BaudRate=1200
  4. 接下来,您要将波特率更改为4800,然后按照以下步骤操作

    1. 发送数据命令,将波特率更改为4800。
    2. 收到设备的确认。
    3. 如果ACK正确,请设置Port.BaudRate=4800
    4. 注意:从控制器设备接收到ACK后,更改Port.BaudRate。通信将以先前设置的BaudRate开始。