【问题标题】:Change baud rate in C# without closing connection在不关闭连接的情况下更改 C# 中的波特率
【发布时间】:2014-05-07 21:23:28
【问题描述】:

我对以下链接有类似的问题。 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..

【问题讨论】:

  • 如果您向我们展示您尝试发送的命令,将会更容易提供帮助。
  • 使用数据包追踪器看看有什么不同?
  • 您尝试过使用SerialPort.DiscardInBuffer 吗?请发布一些您正在使用的代码
  • 我正在使用串口监控程序来寻找差异。我将添加命令...谢谢
  • writer.Write(amessage);//这是发送给设备的 ACK 消息,告诉将波特率设置为 4800,其他软件也发送此 writer.Flush();串行端口。关闭(); if (serialPort != null) serialPort.BaudRate = 4800; System.Threading.Thread.Sleep(3000); serialPort.Open(); if (serialPort != null) serialPort.BaudRate = 4800; reader = new StreamReader((serialPort).BaseStream); writer = new StreamWriter((serialPort).BaseStream);

标签: c# serial-port baud-rate


【解决方案1】:

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

【讨论】:

  • 嗨 Femi,我已经尝试关闭设置波特率并重新打开。初始波特率为 300 波特。如果我发送 300 波特的切换命令(当它已经是 300 时)我可以从设备中得到答案。但是当我发送命令切换到 4800 时我不能。
  • 您好,Femi,您还有其他想法可以解决我的问题吗?谢谢
【解决方案2】:

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

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

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

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-07-17
    • 2019-03-21
    • 2023-03-26
    • 2021-11-14
    相关资源
    最近更新 更多