本帖最后由 DDOF 于 2017-9-26 15:25 编辑
连续采集用波形图显示的时候,总会在波形图最前面显示出上一次采样的数据,数据的量是每通道读取数。应该是前一次关闭采样的时候没来得及读出来的数据,我想知道怎么能把它删掉呢。
前面板和程序框图见图片。
为了观察全部特征我才这样做的,后面会优化。
我参数设置是采样率10000,每通道读取数1000,所以前面板显示的前1000个点就是上一次采样没来得及读出来的。导致当前采样还保留了上一轮的数据。我想做到把这1000个点删掉,也就是清空缓冲区。
属性节点的几个看起来相近的功能都试了没用,望赐教。
程序框图前后是有移位寄存器的,并且在开始有用数组初始化。
-
-
首先,结束采样的时刻有两种,一种是手动停止(比如你按下前面板上的停止布尔按钮),一种是发送数据结束后自动停止。假设你用的是串口通讯,那么前者在串口硬件缓冲区中可能会残留部分已经采集但尚未传输的数据,你可以尝试使用“VISA清空I/O缓冲区”这个函数来达到你的目的;若是后者,你需要发送端在数据的发送的同时,也发送一个是否结束发送的标志位(比如每一帧含一个标志位:F表示不是最后一帧,T表示为最后一帧),这样采集到一帧数据并解码后,就知道是否是最后一帧,从而判断采集循环是否结束。
其次,每通道读取数设为-1是可行的—你可以先用一个队列采集数据(不要求数据的长短,有数据就采集),然后用另一个队列按照每一帧的字节数来获取、处理完整的一帧数据。
一周热门 更多>