【发布时间】: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