连接时更改Serialport的波特rate
-
26-10-2019 - |
题
我正在使用SerialPort类与外部设备进行通信。我以每秒300 baud的速度开始通信,但是在初始“握手”之后,我必须切换到设备指定的波特率(通常为9600 bps)。
在提高波特率后,我一直在尝试继续沟通的尝试不成功,但是我不确定为什么。这使我提出了我的问题:改变波特率的正确方法是什么?连接打开时可以做到吗?还是我应该先关闭连接?
我无法在文档中找到有关此信息的任何信息...
我已经尝试了两者,并且在这两种方面都没有成功,这让我认为我一定缺少明显的东西。
解决方案 2
事实证明,您可以在打开时更改serialport.baudrate。但是@groo中提到的serialport.discardinbuffer是一个很好的提示!
其他提示
从我到目前为止的经验来看,最安全的下注是首先关闭连接,更改费率,然后再次打开。您的设备不介意这一点,因为它可能会等待您发送一些控制字符以确保速度已更改。
您可以在端口打开时尝试更改波特率,但这可能导致缓冲区中检测到无效的字符(取决于设备和协议),这意味着您还应该在更改后立即清除缓冲区(使用 SerialPort.DiscardInBuffer()
).
不隶属于 StackOverflow