连接打开时更改SerialPort的BaudRate

Dav*_*jak 7 c# serial-port serial-communication

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

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

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

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

Gro*_*roo 11

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

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


Dav*_*jak 5

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