串口数据处理分包处理
最近遇到一个需求,利用树莓派去采集一个串口设备的所有数据,设备会主动上报数据,但是呢这个设备是一个集合设备,会上报的报文头都不一样,比如灯亮度或者开关会上报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. 数据处理部分,利用了检测报文头和校验位的做法,把不对的数据剔除
文笔不行,做个记录,酌情参考。
相关推荐
jinhao 2020-09-07
nimeijian 2020-07-30
Johnson0 2020-07-28
swazerz 2020-06-22
仁鱼 2020-06-20
victorzhzh 2020-06-16
rongwenbin 2020-06-15
sxyhetao 2020-06-12
cas的无名 2020-06-09
Johnson0 2020-06-08
zhouqinxiong 2020-06-08
sujins 2020-05-30
Hhanwen 2020-05-29
Hhanwen 2020-05-29
adayan0 2020-05-19
Johnson0 2020-05-17
yinyang00 2020-05-15
登峰小蚁 2020-05-11