zoukankan      html  css  js  c++  java
  • 串口数据处理分包处理

    最近遇到一个需求,利用树莓派去采集一个串口设备的所有数据,设备会主动上报数据,但是呢这个设备是一个集合设备,会上报的报文头都不一样,比如灯亮度或者开关会上报21 12 ·········,风速会上报71 23 ······。等等10多种数据格式。

    刚好net core 支持跨平台串口通信。所以记录如下,主要是数据处理这部分;

    1. 收到的数据立马转移到深度缓存中,在开启线程处理数据

       private List<byte> tempBuffer = new List<byte>();//深度缓存数据
            private void SP_ReadData_DataReceived(object sender, SerialDataReceivedEventArgs e)
            {
                try
                {
                    int count = sP_ReadData.BytesToRead;
                    byte[] buf = new byte[count];
                    sP_ReadData.Read(buf, 0, count);//读取缓冲数据
                    tempBuffer.AddRange(buf);//把数据放入深度缓存区域
                    //提高数据处理速度
                    ThreadPool.QueueUserWorkItem(new WaitCallback(DealData), null);              
                }
                catch (Exception ex)
                {
    
                }
            }

    1. 数据处理部分,利用了检测报文头和校验位的做法,把不对的数据剔除

     

    文笔不行,做个记录,酌情参考。

  • 相关阅读:
    pro asp.net mvc5 7
    pro asp.net mvc5
    第九章 观察者模式 OBSERVER
    第八章 单件模式 singleton
    第二部分 职责型模式responsibility
    设计模式5 合成模式 COMPOSITE
    linux中xargs用法
    linux中du的用法
    linux中find的用法
    linux中grep注意
  • 原文地址:https://www.cnblogs.com/-fengzheng/p/12741258.html
Copyright © 2011-2022 走看看