串口數據處理分包處理


最近遇到一個需求,利用樹莓派去采集一個串口設備的所有數據,設備會主動上報數據,但是呢這個設備是一個集合設備,會上報的報文頭都不一樣,比如燈亮度或者開關會上報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. 數據處理部分,利用了檢測報文頭和校驗位的做法,把不對的數據剔除

 

 

 

 

文筆不行,做個記錄,酌情參考。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM