完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
编写了一个串口数据采集的程序,之前将读取串口数据、显示波形和存储数据做成顺序结构,这导致了工作时间长了会产生串口缓冲区溢出的问题,思考了一下,应该是由于存储数据所需要的时间比较长,使得程序整体出现问题。现在我想将数据的存储单独作为一个线程运行,应该怎么操作呢?此外我还考虑了一个问题:局部变量在多线程之间是不可以用的吧?我加了一个并列的循环,用局部变量的方式存储了数据,但我突然发现,既然存储的时间比较长,那局部变量(读取串口数据并显示的程序中的)是不能用于存储的,因为存储间隔的时间里局部变量应该发生了变化。读取显示的那个线程的循环速度要快很多,实际上存储下来的数据是有丢失的。
请大神指导! |
|
相关推荐
7个回答
|
|
用两个while,中间的数据交换用队列的方法,你看一下“元素入队列”函数的范例,正好解决你这个问题
最佳答案
|
|
|
|
存储作为一个单独的线程,不要用局部变量,尽量用队列
|
|
|
|
生产者消费者结构
|
|
|
|
你好,NI的范例里面就有完整的例子,关于连续数据采集,生产消费者结构+通知器
|
|
|
|
用队列,队列是传引用,不会丢失数据,元素入队列后如果前面有数据就在队列中等待处理
|
|
|
|
前排学习前排学习前排学习
|
|
|
|
|
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
Labview生成的exe程序,源程序找不到了,有什么办法可以对exe程序的界面和菜单等进行调整和编辑
134 浏览 0 评论
想通过labview实现这个二维数组转成一维数组的功能,但是不知道怎么搞?新手求图(苍蝇戳手)
1141 浏览 3 评论
关于DAQExpress软件中电压的最大值最小值是根据什么来确定的?
1840 浏览 1 评论
基于LabVIEW的声发射定位:如何准确获取信号到达不同传感器的时差?
1613 浏览 1 评论
2607 浏览 0 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-8-20 03:21 , Processed in 0.821465 second(s), Total 86, Slave 68 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191