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

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

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

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

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

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

LabVIEW是一款强大的图形化编程环境,可以用于各种应用领域。其中,串口通信是一种常见的应用场景。在LabVIEW中,使用VISA功能库可以方便地进行串口通信。 下面我将以一个简单的实例来说明如何在LabVIEW中进行串口接收。 首先,我们需要在Block Diagram中打开一个新的VI(虚拟仪器程序)。然后,从Functions面板中拖拽一个VISA Serial Open函数,一个VISA Read函数和一个VISA Close函数到Block Diagram中。 接下来,我们需要配置串口通信的参数。双击VISA Serial Open函数,选择对应的串口号和波特率,并将返回值连接到VISA Read函数的输入端。 然后,我们需要设置读取数据的方式。双击VISA Read函数,选择读取的数据长度和超间,并将返回的数据连接到Block Diagram的其他模块中进行处理。 最后,我们需要关闭串口连接。将VISA Close函数拖拽到VISA Read函数的输出端,将其连接到VISA Serial Open函数的输入端。 至此,我们的串口接收程序已经完成。我们可以点击运行按钮来测试该程序。如果串口通信正常,请确保你的串口设备已经连接并发送数据。 需要注意的是,在执行该程序之前,你需要先安装并配置正确的VISA驱动程序,并将VISA模块添加到LabVIEW环境中。 总结:在LabVIEW中进行串口接收,需要通过VISA功能库调用VISA Serial Open、VISA Read和VISA Close函数来完成。配置正确的串口参数,读取数据进行处理,最后关闭串口连接。希望以上回答能够帮助你理解LabVIEW串口接收的实例。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值