2011-04-28 99 views
5

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

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

我一直无法找到这个文件中的任何信息......

我曾经尝试都在两种方式,这让我觉得我一定是缺少明显的东西都没有成功。

+0

你的意思是不成功,究竟是什么意思?您是否尝试过(如果可能)先使用终端进行通信? – Groo 2011-04-28 07:10:35

+0

@格鲁:谢谢你的帮助我设法使它工作。事实证明,我所缺少的是在发送ACK和用不同的BaudRate重新打开端口之间的等待时间。它现在有效。 – 2011-04-28 07:13:01

回答

4

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

+0

你能解释一下你是如何得到这个更详细的工作?请参阅http://stackoverflow.com/questions/8852611/changing-the-speed-on-an-open-serial-port – 2012-01-13 15:33:30

9

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

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