初学乍练,还望大家多多指教。
我想模拟输出连续播放一个读取自文件的数据,因为数据比较大,所以采用了生产者/消费者模式。生产者循环读取数据放入队列,消费者循环出队列的数据一方面画出来,另一方面模拟输出。画出来的结果看起来挺正常,模拟输出的结果重新用模拟输入采集后发现丢失了很多段数据点,用示波器看也是如此。我试着调了模拟输出缓存大小,比生产者循环每次放入队列的数据量小或大几倍都没什么效果。希望能有专家帮我指出问题所在,多谢啦!
-
数据丢失截屏
-
-
simultaneous AI AO producer consumer.vi
下载积分: 积分 -1 分
76.59 KB, 下载次数: 60, 下载积分: 积分 -1 分
我的vi
队列的数据都存在电脑内存,一般不会出现数据掉失的问题。
可你的模拟输入没有使用队列的类似方法进行处理。直接通过DAQmx Write.vi输出,在这个循环输出中因为元素出队列和10ms延时模块导致输出每个数据出现滞后现象。而你的DAQmx Read.vi在循环采集数据的时间很快,所以会出现每个数据重复采集好几个,出现上面有直线数据的问题。
谢谢您的帮助。
我现在有点不清楚。我试了两件事,一是把模拟输出连到示波器,发现还是有大段大段的直线;二是试了把模拟输入和输出的循环合并,但结果还是没有变化。模拟正弦波送到队列里,从模拟输入记录到的是信号仿佛被时间上压缩了一样。
一周热门 更多>