2

我对以下链接有类似的问题。如何在不关闭连接的情况下更改波特率?. 但我使用 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..

4

2 回答 2

2

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

于 2011-08-09T07:59:43.883 回答
1

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

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

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

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

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

于 2011-12-27T08:58:59.217 回答