C# 更改串行端口时丢失当前数据-波特率
我尝试使用ReadExisting()接收方法通过串行端口从设备获取数据 在第一点,我以波特率300向设备发送请求。然后,设备以相同的波特率应答。在将波特率更改为9600(发送确认命令后设置serialport.baudrate=9600)之前,我确认了这个答案 我的问题是更改波特率后会丢失缓冲区中的数据(ReadExisting()方法无法读取此数据?)。但波特率为9600的下一个命令仍然从设备接收应答。 我们如何解决这个问题?非常感谢 例如: PC:请求握手(300bps) 设备:应答(300bps) PC:确认设备的答案(300bps) 设备:数据丢失(我尝试在此处接收) ----------将波特率更改为9600-------------- 设备:数据丢失(我也尝试在这里接收) PC:发送下一个命令(9600bps) 设备:应答(9600bps) PC:发送下一个命令(9600bps)C# 更改串行端口时丢失当前数据-波特率,c#,serial-port,C#,Serial Port,我尝试使用ReadExisting()接收方法通过串行端口从设备获取数据 在第一点,我以波特率300向设备发送请求。然后,设备以相同的波特率应答。在将波特率更改为9600(发送确认命令后设置serialport.baudrate=9600)之前,我确认了这个答案 我的问题是更改波特率后会丢失缓冲区中的数据(ReadExisting()方法无法读取此数据?)。但波特率为9600的下一个命令仍然从设备接收应答。 我们如何解决这个问题?非常感谢 例如: PC:请求握手(300bps) 设备:应答(30
设备:应答(9600bps)您必须检查UART的状态位,清除所有错误并忽略与坏数据相关的数据。如果设备自动发送连续数据,则在更改速率后,接收缓冲区中的数据不好,必须清除。理论上,数据将以波特率9600接收。但是我一点也不能接受。我的receive事件可能太慢,无法获取此数据?对于前面提到的,我如何检查状态位并避免删除?如果您使用事件(而不是计时器),您将能够接收所有数据。有关错误,请参阅msdn: