微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 测试测量 > Labview > 连续采集用波形图显示的时候,总会在波形图最前面显示出上一次采样的数据,怎么清空缓存。

连续采集用波形图显示的时候,总会在波形图最前面显示出上一次采样的数据,怎么清空缓存。

时间:10-02 整理:3721RD 点击:

           连续采集用波形图显示的时候,总会在波形图最前面显示出上一次采样的数据,数据的量是每通道读取数。应该是前一次关闭采样的时候没来得及读出来的数据,我想知道怎么能把它删掉呢。
           前面板和程序框图见图片。
           为了观察全部特征我才这样做的,后面会优化。
           我参数设置是采样率10000,每通道读取数1000,所以前面板显示的前1000个点就是上一次采样没来得及读出来的。导致当前采样还保留了上一轮的数据。我想做到把这1000个点删掉,也就是清空缓冲区。
           属性节点的几个看起来相近的功能都试了没用,望赐教。
程序框图前后是有移位寄存器的,并且在开始有用数组初始化。



以下是清空波形图和波形图表的方式

             按您说的做了,没有作用。我想了下,因为这个把波形图初始化是放在采样读取的while循环之外的。也就是先波形图清空,然后采样数据填入波形图。而上一次采样遗留的数据是在缓冲区里,并没有存在波形图的数组里,清空不了。要的是清空采样的缓冲区。需要用属性节点之类的操作把缓冲区清空,但是我找不到这个选项。

            我的连续采样是这样的,采样率=10000,每通道读取1000,缓冲区满1000个点了,相当于采0.1秒数据就显示出来,然后上次采样最后<=0.1秒的<=1000个点没来得及读出来我就结束采样了,这些数据一直保存在缓冲区。这一轮采样一开始,很短的一个时间,采集到很少的采样点,跟缓冲区原有的数据凑成1000个,就输出来了。导致我的这一轮采样却有上一轮采样的数据。


小编解决了吗  我也遇到同样的问题。

还没有,应该是要调用属性节点,在下一轮采样前请假清空缓存,但是还没找到方法。

那就每次把缓冲区的数据采集完之后再结束该轮采样。

你是正版的Labview 吗   如果是可以电话售后,我这里的Labview过期了

把采样的东西放到队列里面 另外 你是用的生产者消费者模式吗

找个破解工具不就行了 那么简单 不破解就改下电脑系统时间 改到以前例如改到2015年

            我也不能控制缓冲区的数据全部采完呀,采样的那部分完全是硬件在做,它自己有个缓冲区,满了1000个数倒出来一次,我结束采样时间就算精准控制为0.1秒的整数倍,这个缓冲区也可能放进去了几个数据,在下一轮采样被读出来。
            而且我试过每通道读取数设为-1,这个模式是不停的读缓冲区的数据,可以看到读出来的数据长度是不固定的,也就是说采出每个点的时间并不是精准的1/Rate,所以LABVIEW的连续采样才有一个缓冲区去稳定数据。
            所以解决方式应该是在当前采样完之后要清空缓冲区,但是找不到方法。

首先,结束采样的时刻有两种,一种是手动停止(比如你按下前面板上的停止布尔按钮),一种是发送数据结束后自动停止。假设你用的是串口通讯,那么前者在串口硬件缓冲区中可能会残留部分已经采集但尚未传输的数据,你可以尝试使用“VISA清空I/O缓冲区”这个函数来达到你的目的;若是后者,你需要发送端在数据的发送的同时,也发送一个是否结束发送的标志位(比如每一帧含一个标志位:F表示不是最后一帧,T表示为最后一帧),这样采集到一帧数据并解码后,就知道是否是最后一帧,从而判断采集循环是否结束。
其次,每通道读取数设为-1是可行的—你可以先用一个队列采集数据(不要求数据的长短,有数据就采集),然后用另一个队列按照每一帧的字节数来获取、处理完整的一帧数据。

我用的是采样板卡直接采样,然后用波形图显示出来,没有串口通讯。这个应该怎么清空缓存呢

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top