NI LabVIEW,CVI,数据采集等产品讨论区

取消
显示结果 
搜索替代 
您的意思是: 

labview串口通信 数据帧丢失

LabVIEW被动接受下位机上传的数据,下位机每5毫秒发送一帧数据,一帧数据17字节,波特率为115200;程序是用的生产者-消费者结构,利用队列进行传递,串口在生产者循环中的事件结构超时分支读取数据进队列,,超时时间设为4ms,在消费者循环中出队列解析数据并进行相关处理,但是会有很多数据帧丢失,1s应该收到200帧数据,但解析出来的只有100多帧,被丢弃的数据帧格式也没出错,怎么解决这个问题啊?谢谢!

0 项奖励
1 条消息(共 6 条)
7,183 次查看

LABVIEW不能保证4毫秒的精确定时,事件结构超时尤其如此。一次多读几帧,比如10帧,这样循环时间为50毫秒。注意读取时不需要定时,串口读函数自己保证。

陈树学
QQ:276509891 .
EMAIL:CSXCS_366@126.COM
qq群:78561268 80754347 37591940
http://labview.weebly.com/
新书《LabVIEW实用工具详解》已经发售,敬请关注。
0 项奖励
2 条消息(共 6 条)
7,159 次查看

你的程序是被动接受数据的,不存在定时的问题,你可以用while循环,数据处理直接在一个循环内完成应该就可以。

0 项奖励
3 条消息(共 6 条)
7,153 次查看

您好,把程序生产者循环中的事件结构删掉,直接将串口读数据放在生产者while循环中,等待时间为50ms,将读出的数据进队列,然后再消费者循环中出队列,解析处理数据,但现在每秒处理的数据只有10帧左右,比之前的还要少很多,是我的程序结构有问题吗?但是直接放在一个while循环中读数据然后处理数据,速度也是10帧左右。

0 项奖励
4 条消息(共 6 条)
7,134 次查看

程序截图发来看看吧

0 项奖励
5 条消息(共 6 条)
7,100 次查看

这是生产者-消费者结构,消费者循环中1s能处理的数据帧数与在一个while循环中实现所处理的数据帧数差不多,都是10帧左右,与应该解析200帧数据的数据量差很多。

下载全部
0 项奖励
6 条消息(共 6 条)
7,091 次查看