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

在提高波特率后,我一直在尝试继续沟通的尝试不成功,但是我不确定为什么。这使我提出了我的问题:改变波特率的正确方法是什么?连接打开时可以做到吗?还是我应该先关闭连接?

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

我已经尝试了两者,并且在这两种方面都没有成功,这让我认为我一定缺少明显的东西。

有帮助吗?

解决方案 2

事实证明,您可以在打开时更改serialport.baudrate。但是@groo中提到的serialport.discardinbuffer是一个很好的提示!

其他提示

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

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

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top