用于解决LABVIEW串口接收数据时丢数、漏数问题的测试程序

时间:2024-03-19 08:01:54

用于解决LABVIEW串口接收数据时丢数、漏数问题的测试程序
用于解决LABVIEW串口接收数据时丢数、漏数问题的测试程序自带例程

存在的问题:
(1) 串口按照固定字节读数,对于固定字节的测试程序能够满足要求,对于字长不固定的串口数据,无能无力。
(2) 串口在接收数据的过程中可能只接收了一半的数据,下一拍再接收剩余一半的数据,但是在实时解析的过程中,判断接收的数据是非正常的数据,造成丢数、漏数的情况。

针对存在丢数和漏数的情况,解决办法有两个,第一个方法是,通过建立移位寄存器,将接收到的数据首尾相连,保证接收串口数据的完整性 。
用于解决LABVIEW串口接收数据时丢数、漏数问题的测试程序
存在的问题:
随着接收数据的时间越来越长,移位寄存器中的数据越来越庞大,需要及时清理移位寄存器中的数据,同时会严重影响程序运行的速度。

第二个方法是,通过建立队列,将接收到的数据放到队列里,然后再将数据从队列里读出来,好处是避免了大量数据的缓存影响程序运行时间。
用于解决LABVIEW串口接收数据时丢数、漏数问题的测试程序
存在的问题:
(1)队列有一个特点,一旦出队列,队列里面的数据全部一次性出来。因此可以根据队列中元素的数量进行出队列,这样使得串口测试程序每帧数据的字长必须是固定的;
(2)虽然利用队列,解决了串口接收过程中只接收一半的情况,但是又会引入另外一个问题,当队列中至少有两帧数据的时候,只能解析其中一组数据,另外一组数据无法解析,导致数据流失的问题。

因此传统的这两种方法都不能完全解决现有的问题。
为了解决串口接收数据变字节,丢数漏数的情况,本人通过***方法完美解决了现在存在的问题,使得基于LABVIEW的串口测试程序功能更加强大。
(1) 接收串口的数据字节可变;
(2) 解决丢数漏数的问题呢,保证测试程序可靠稳定。
(3) 对于通信周期要求较高的情况,传统1ms的定时周期很难达到,可通过打包多帧数据,一次进行发送,再进行解析的方法

该测试程序花费了很长的时间和精力,有需要的朋友可以单独联系我,不在此进行分享,联系方式微信和手机号都是一个 13263140550,加微信时请备注LABVIEW测试程序,不然不予通过。