码迷,mamicode.com
首页 > 其他好文 > 详细

串口高波特率丢失字符

时间:2020-07-07 17:58:20      阅读:56      评论:0      收藏:0      [点我收藏+]

标签:oid   字节数组   port   str   try   string   接收   out   tar   

 

 

 

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) { } }

 

串口高波特率丢失字符

标签:oid   字节数组   port   str   try   string   接收   out   tar   

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

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!