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


文筆不行,做個記錄,酌情參考,
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/40679.html
標籤:.NET Core
