LabVIEW上位机串口数据接收不完整、不正常的解决方法

通常在测试、测量实验中, 使用LabVIEW做上位机的开发,串口通信是一种常用的数据传输方式。

1在传输数据较少、波特率低的情况下,通常的串口接受数据不会存在问题。

2一次性传输数据多、波特率高情况下,经常出现接受数据不完整、或者只能接受到很少一部分的数据。下面是针对这种情况的几种分析:

(可能1):数据量太大,缓冲区需要重新设计(不常见)

labview连接access数据库udl 测试失败 labview接收数据错误_串口

labview连接access数据库udl 测试失败 labview接收数据错误_串口_02


可能2)接收的数据较长,没有接收完就已经结束。

可以采用首位相接的方法,当可以达到接受数据次数时再停止。


labview连接access数据库udl 测试失败 labview接收数据错误_数据_03


可能3)引入适量延迟时间,比如上图中,在while循环内部,添加等待几毫秒,这种情况需要看实验情况而定。

labview连接access数据库udl 测试失败 labview接收数据错误_串口_04

可能4)数据还没接收完,就已经开始新一轮的数据接收:

比如接收1920字节的一组数据,使用9600波特率传输(无校验位)。

波特率9600 = 9600(位/秒)= 960(字节/秒)。
1920/960=2s。 所以在开始接收第一组数据后,至少2s才能接收第二组数据。

(可能5)“摸索后”的终极法宝,有时候LabVIEW串口接收数据就是不正确,明明都已经检查好多程序还没有发现任何问题,还是接收数据不全。

这时候可以使用,连续运行法。也就是串口发送与接收程序直接写在程序框图中,不需要加while循环,然后运行的时候直接点击连续运行如下图所示。

labview连接access数据库udl 测试失败 labview接收数据错误_串口_05


目前,笔者只总结了这几种解决方案。最后一种方法虽然无法简单解释其原因,但却是一种很灵性的方法,笔者用此方法通过采集核能谱数据实验,串口要每次有上千的数据传输,结果也十分稳定与高效(虽然代码与上有所不同,但用的是连续运行的方法)。

在LabVIEW,串口通信如果有传输接收与发送数据不全的问题,可以留言在评论区。学无止境!