C# 更改串行端口';连接打开时的波特率

C# 更改串行端口';连接打开时的波特率,c#,serial-port,serial-communication,C#,Serial Port,Serial Communication,我正在使用SerialPort类与外部设备通信。我以每秒300波特的速度开始通信,但是在初始“握手”后,我必须切换到设备指定的波特率(通常为9600 Bps) 我在提高波特率后尝试继续通信失败,但我不确定原因。这就引出了我的问题:改变波特率的正确方法是什么?这可以在连接打开时完成,还是应该先关闭连接 我在文档中找不到任何关于此的信息 这两种方法我都试过了,但都没有成功,这让我觉得我肯定错过了一些显而易见的东西。根据我目前的经验,最安全的办法是先关闭连接,更改速率,然后再打开。您的设备不会介意这一

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

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

我在文档中找不到任何关于此的信息


这两种方法我都试过了,但都没有成功,这让我觉得我肯定错过了一些显而易见的东西。

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


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

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


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

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

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

你说的不成功到底是什么意思?你有没有试过(如果可能的话)先用终端进行交流?@Groo:多亏了你的anwser,我成功地让它工作了。事实证明,我所缺少的只是发送ACK和以不同波特率重新打开端口之间的等待时间。现在可以用了。@Groo你能看看我的相关资料吗?@DavidBožjak你能看看我的相关资料吗?你说的不成功到底是什么意思?你有没有试过(如果可能的话)先用终端进行交流?@Groo:多亏了你的anwser,我成功地让它工作了。事实证明,我所缺少的只是发送ACK和以不同波特率重新打开端口之间的等待时间。现在可以用了。@Groo你能看看我的相关资料吗?@DavidBožjak你能看看我的相关资料吗?你能详细解释一下你是如何让这个工作的吗?你能不能请你看看我的相关资料?你能解释一下你是如何让它更详细地工作的吗?你能看到我的相关信息吗?你能看到我的相关信息吗?你能看到我的相关信息吗?