您好我的问题是关于labVIEW VI(2013)我试图修改。 (我只是学习使用这种语言。我搜索了NI网站和stackoverflow寻求帮助但没有成功,我怀疑我使用了正确的关键词)。
我的VI由一个平面序列组成,其中一个窗格包含一个while循环,其中从设备收集整数数据并显示在图表上。
我希望能够缓冲这些数据,然后在收集到预设数量的样本后将其发送到磁盘。到目前为止,我的尝试只会导致最后一条记录被保存。
具体来说,我需要知道如何将数据保存在缓冲区(数组)中,然后在捕获正确数量的样本时将其全部保存到磁盘(保存时因为捕获速度会使进程减慢到很多)。
希望问题清楚,并提前感谢任何建议。 汤姆
答案 0 :(得分:2)
下面是一个简单的循环缓冲区,它包含最近的100个读数。每次重新填充缓冲区时,其内容都将写入文本文件。将图像拖到VI的程序框图中进行试用。
随着您对LabVIEW的了解越来越多,并且随着性能和多线程需求的增加,请考虑阅读其他答案中提到的LabVIEW design patterns中的一些内容:
答案 1 :(得分:0)
屏幕截图肯定有帮助。但是,有些事情很清楚:
除非您正在处理非常大量的数据,非常慢的硬盘驱动器或有其他不寻常的要求,请在while循环之前打开文件,每次获取样本时将其写入(将缓冲区留给操作系统),以及之后关闭它。
如果您决定需要自行管理缓冲,则可以使用队列。请参阅此示例:Textoo以供参考(它们从磁盘流式传输数据,在队列中缓冲它,但这是相同的想法)
我的VI由一个平面序列组成,其中一个
替换有限状态机的平坦序列(例如https://decibel.ni.com/content/docs/DOC-14804)
答案 2 :(得分:0)
我建议使用producer/consumer design pattern.将数据采集和数据保存拆分为两个不同的循环。
此外,如果您需要非常高的吞吐量,请考虑使用TDMS文件格式。 请点击此处查看概述:http://www.ni.com/white-paper/3727/en/