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

LabVIEW上位机串口数据接收不完整、不正常的解决方法
通常在测试、测量实验中, 使用LabVIEW做上位机的开发,串口通信是一种常用的数据传输方式。
1在传输数据较少、波特率低的情况下,通常的串口接受数据不会存在问题。
2一次性传输数据多、波特率高情况下,经常出现接受数据不完整、或者只能接受到很少一部分的数据。下面是针对这种情况的几种分析:
(可能1):数据量太大,缓冲区需要重新设计(不常见)
      在这里插入图片描述
可能2)接收的数据较长,没有接收完就已经结束。
可以采用首位相接的方法,当可以达到接受数据次数时再停止。
在这里插入图片描述
可能3)引入适量延迟时间,比如上图中,在while循环内部,添加等待几毫秒,这种情况需要看实验情况而定。

在这里插入图片描述

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

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

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

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

这时候可以使用,连续运行法。也就是串口发送与接收程序直接写在程序框图中,不需要加while循环,然后运行的时候直接点击连续运行如下图所示。
在这里插入图片描述
目前,笔者只总结了这几种解决方案。最后一种方法虽然无法简单解释其原因,但却是一种很灵性的方法,笔者用此方法通过采集核能谱数据实验,串口要每次有上千的数据传输,结果也十分稳定与高效(虽然代码与上有所不同,但用的是连续运行的方法)。
在LabVIEW,串口通信如果有传输接收与发送数据不全的问题,可以留言在评论区。学无止境!

  • 23
    点赞
  • 97
    收藏
    觉得还不错? 一键收藏
  • 17
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 17
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值