9

我正在使用 SerialPort 类与外部设备进行通信。我以每秒 300 波特的速度开始通信,但是在初始“握手”之后,我必须切换到设备指定的波特率(通常为 9600 Bps)。

在我提高波特率后,我尝试继续通信没有成功,但我不知道为什么。这引出了我的问题:改变波特率的正确方法是什么?可以在连接打开时完成,还是应该先关闭连接?

我一直无法在文档中找到有关此的任何信息...

我两种方式都尝试过,但都没有成功,这让我觉得我一定遗漏了一些明显的东西。

4

2 回答 2

12

根据我目前的经验,最安全的选择是先关闭连接,更改速率,然后再次打开。您的设备不会介意这一点,因为它可能会等待您发送一些控制字符以确保速度已更改。

您可以尝试在端口打开时更改波特率,但这可能会导致在缓冲区中检测到无效字符(取决于设备和协议),这意味着您还应该在更改后立即清除缓冲区(使用SerialPort.DiscardInBuffer()) .

于 2011-04-28T07:01:42.530 回答
6

事实证明,您可以在 SerialPort.BaudRate 打开时更改它。但是@Groo 在回答中提到的 SerialPort.DiscardInBuffer 是一个很好的提示!

于 2011-05-28T20:10:51.077 回答