LabVIEW用户界面刷新太快影响数据接收
时间:10-02
整理:3721RD
点击:
1.功能是实现从UDP接收10ms一包的数据帧,每帧几百个字节,解析成一系列浮点数后存TxT文件,并且在用户界面实时显示波形。
2.采用了生产者-消费者结构,生产者进行UDP数据读取,消费者解析、存储、显示
现在的问题是:
由于数据浮点运算很多,数据帧频率也很高,每秒钟需要在消费者循环中刷新100次程序界面,会导致数据丢失,经测试只要不刷新界面就不会丢。
尝试过采用次级消费者结构,即一级消费者解析后将数据写入二级消费者循环进行显示,同样丢数
现在想能否把每次解析完毕的数据(假设每次解析到20个浮点数),写入一个大数组(比如2000个元素的数组),
写满100次(也就是1秒)刷新一下程序界面,
可是不知道怎么实现
大家帮忙想想办法,
非常感谢!
还是学生吧!
你可以这么做:
1. 后面板数据接收及运算处理用一个while循环框,
2. 前面板数据刷新使用一个while循环框;
3. 1号与2号while循环可以使用消息队列的形式传递数据
即1号while循环使用入队列操作,2号while循环使用出队列操作即可
这样前面板的刷新对后面板程序运行是没有影响的;
消息队列控件路径: 后面板/编程/同步/队列操作
我说的采用次级消费者结构就是你说的这个意思,
整个程序有三个循环
第一循环用来接收UDP数据,通过消息队列传递给第二循环
第二循环后台处理数据,并写入文件,同时将处理后的数据通过另外的消息队列传递给第三循环
第三循环用来显示数据
但是这样仍然会丢失数据,在写入的文本文件中查看存入的数据帧号发现有丢失
将数据显示刷新频率降低就不丢数了