首页 > 其他 > 详细

串口高波特率丢失字符

时间:2020-07-07 17:19:37      阅读:60      评论:0      收藏:0      [点我收藏+]

 

 

 

void DataReceived(object sender, SerialDataReceivedEventArgs e)
{
    try
    {
        if (!serialPort.IsOpen)
        {
            return;
        }        

        Byte[] receivedData = new Byte[serialPort.BytesToRead];        //创建接收字节数组
        serialPort.Read(receivedData, 0, receivedData.Length);         //读取数据

        serialPort.DiscardInBuffer();
        serialPort.DiscardOutBuffer();

        string read = Encoding.ASCII.GetString(receivedData);

        read = read.Replace("\0", "");        
    }
    catch (Exception ex)
    {        
    }  
}

 

在DataReceived方法里,使用上面的方式,在大波特率,比如115200会出现read丢字符的现象。使用下面的方式,没有出现。

 

void DataReceived(object sender, SerialDataReceivedEventArgs e)
{
    try
    {
        if (!serialPort.IsOpen)
        {
            return;
        }
int n = serialPort.BytesToRead; byte[] buf = new byte[n]; int readLength = 0; int offset = 0; while (offset < n) { readLength = serialPort.Read(buf, 0, n - offset); if (readLength < 0) { return; } offset = offset + readLength; }
    
string read = Encoding.ASCII.GetString(buf); } catch (Exception ex) { } }

 

串口高波特率丢失字符

原文:https://www.cnblogs.com/code1992/p/13261832.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!