连接打开时更改SerialPort的BaudRate

时间:2011-04-28 06:58:30

标签: c# serial-port serial-communication

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

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

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

我已经尝试了两种方式并且两种方式都没有成功,这让我觉得我必须遗漏一些明显的东西。

2 个答案:

答案 0 :(得分:11)

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

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

答案 1 :(得分:5)

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

相关问题