LabVIEW编写一个数据采集和存储的程序,如何将采集显示波形和存储变为两个不同的线程单独运行?

2019-07-17 16:34发布

编写了一个串口数据采集的程序,之前将读取串口数据、显示波形和存储数据做成顺序结构,这导致了工作时间长了会产生串口缓冲区溢出的问题,思考了一下,应该是由于存储数据所需要的时间比较长,使得程序整体出现问题。现在我想将数据的存储单独作为一个线程运行,应该怎么操作呢?此外我还考虑了一个问题:局部变量在多线程之间是不可以用的吧?我加了一个并列的循环,用局部变量的方式存储了数据,但我突然发现,既然存储的时间比较长,那局部变量(读取串口数据并显示的程序中的)是不能用于存储的,因为存储间隔的时间里局部变量应该发生了变化。读取显示的那个线程的循环速度要快很多,实际上存储下来的数据是有丢失的。

请大神指导!
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
7条回答
铝合金蝴蝶
1楼-- · 2019-07-17 20:43
用两个while,中间的数据交换用队列的方法,你看一下“元素入队列”函数的范例,正好解决你这个问题 最佳答案
mjc2007
2楼-- · 2019-07-17 23:07
存储作为一个单独的线程,不要用局部变量,尽量用队列
dlutccj
3楼-- · 2019-07-17 23:23
 精彩回答 2  元偷偷看……
imcu2007
4楼-- · 2019-07-18 03:28
你好,NI的范例里面就有完整的例子,关于连续数据采集,生产消费者结构+通知器
zhouyezuishuai
5楼-- · 2019-07-18 04:02
用队列,队列是传引用,不会丢失数据,元素入队列后如果前面有数据就在队列中等待处理
yuxun0613
6楼-- · 2019-07-18 04:06
前排学习前排学习前排学习

一周热门 更多>