请问Labview中有帧头,有校验位的串口通信程序如何编写?

2019-07-17 07:37发布

点击学习>>《龙哥手把手教你学LabVIEW视觉设计》视频教程

各位大佬好,
我学习了一段时间labview VISA通讯,了解了简单的通讯方法。现在遇到了一个比较棘手的问题,无法解决,请各位大佬指教。
我的Labview从串口不断的被动接收数据,这些数据包含加速度跟角速度信息,我想实时的读取出来,两种信息数据帧格式如图。 acc.jpg gyro.jpg
每组数据有帧头0X55,0X51或0X52,中间是数据,最后有一个校验和。
我尝试只匹配帧头0x55 0x51但是这样采集会出问题,原因是采集的数据中可能会跟帧头数据一致,造成了误识别。
故想请问一下各位大佬,这样的情况应该如何解决?
附一张串口出来的数据。 serial.jpg
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
10条回答
shangxinol
1楼-- · 2019-07-18 09:39
这样的程序会有数据丢失的情况,请指教
read.jpg
shangxinol
2楼-- · 2019-07-18 09:56
我读取的时候如果一下次读取11个字节去匹配,这个时候往往匹配不到。如果一下子把缓冲区全部读取的话,又会丢失一些数据。目前陷入了两难地步。
recy.png
sszx2007
3楼-- · 2019-07-18 10:32
你的完整数据是11个字节,你可以做一个大小只有12个字节的缓冲区,然后你从串口中按1个字节的读数据填入缓冲区中(从后面插入,满12个字节就删除最前的),再判断缓冲区是否满足两个条件,1:缓冲区已经有12个字节,2:最前面两个字节是否为5551/52。满足即提取前面11个字节,即你想要的数据,后面再一直重复以上操作
唐少华
4楼-- · 2019-07-18 15:59
 精彩回答 2  元偷偷看……

一周热门 更多>