zoukankan      html  css  js  c++  java
  • 串口高波特率丢失字符

    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("", "");        
        }
        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) { } }
  • 相关阅读:
    Hackerrank alien-flowers(数学公式)
    Hackerrank manasa-and-combinatorics(数学推导)
    Codeforces 314B(倍增)
    Codeforces Round #403(div 2)
    Mutual Training for Wannafly Union #6
    几道splay
    高数(A)下 第十章
    Bestcoder #92
    codevs1700 施工方案第二季
    poj2631
  • 原文地址:https://www.cnblogs.com/code1992/p/13261832.html
Copyright © 2011-2022 走看看