完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
扫一扫,分享给好友
初学乍练,还望大家多多指教。
我想模拟输出连续播放一个读取自文件的数据,因为数据比较大,所以采用了生产者/消费者模式。生产者循环读取数据放入队列,消费者循环出队列的数据一方面画出来,另一方面模拟输出。画出来的结果看起来挺正常,模拟输出的结果重新用模拟输入采集后发现丢失了很多段数据点,用示波器看也是如此。我试着调了模拟输出缓存大小,比生产者循环每次放入队列的数据量小或大几倍都没什么效果。希望能有专家帮我指出问题所在,多谢啦!
|
|
相关推荐
10个回答
|
|
看了程序,可惜我没装有程序里DAQ那个模块,程序显示不全。
队列的数据都存在电脑内存,一般不会出现数据掉失的问题。 可你的模拟输入没有使用队列的类似方法进行处理。直接通过DAQmx Write.vi输出,在这个循环输出中因为元素出队列和10ms延时模块导致输出每个数据出现滞后现象。而你的DAQmx Read.vi在循环采集数据的时间很快,所以会出现每个数据重复采集好几个,出现上面有直线数据的问题。 |
|
|
|
|
|
|
|
谢谢您的帮助。 我现在有点不清楚。我试了两件事,一是把模拟输出连到示波器,发现还是有大段大段的直线;二是试了把模拟输入和输出的循环合并,但结果还是没有变化。模拟正弦波送到队列里,从模拟输入记录到的是信号仿佛被时间上压缩了一样。 |
|
|
|
我试了更简单的情况,Configure -> Timing -> Write ->Start -> Is Done? -> Stop -> Clear, Is Done?在while loop中, 这样输出正弦波是可以的。但是我之所以使用生产者/消费者模式,是因为数据太大,不能一次写进buffer,所以想要把write或者出队列包括到while里面,但是这样简单的情况,如果把Write -> Start -> Is Done? 都包进去就会输出错误结果,Stop也包进去则会报错。
|
|
|
|
把write写在start前面是必须的。但是不能每次循环都写一次,开始一次,所以要让start只有第一次有效,然后就可以了。
|
|
|
|
正好在学习生产者-消费者模式,down下来学习下
|
|
|
|
学习一下,正好是个输入输出,用的是visa
|
|
|
|
这次真的是创造新的程序做出新的政策 地方
|
|
|
|
学习学习!!!!!!!!!!!!!
|
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
344 浏览 1 评论
NI Vision有个图片打不开其他图都能打开(用NI Vision Assistant也打开不了)
819 浏览 1 评论
labview2015使用Excel报表程序打包生成后打开程序要选一个vi才能使用,否则软件就会报错,这是什么问题?
1400 浏览 2 评论
LabVIEW与单片机无法串口通信 提示串口打开错误 端口设置有问题吗?
1335 浏览 3 评论
1617 浏览 2 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-19 18:41 , Processed in 0.627228 second(s), Total 66, Slave 56 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号