使用双缓冲模式信号输出问题求教 点击:789 | 回复:3



林海孤叶

    
  • 精华:2帖
  • 求助:0帖
  • 帖子:15帖 | 53回
  • 年度积分:0
  • 历史总积分:108
  • 注册:2004年2月19日
发表于:2004-04-04 11:07:00
楼主
使用NI的PCI6110数据采集卡,使用双缓冲模式进行信号输出,当前半缓冲区满了后使用WFM_DB_Transfer()再取后半缓冲区的数据,可程序运行后发现,一开始估计也就三四个周期是输出整个BUFFER里的数据,而后只输出前半缓冲区的数据,这是怎么回事?



cki

  • 精华:0帖
  • 求助:0帖
  • 帖子:3帖 | 2回
  • 年度积分:0
  • 历史总积分:11
  • 注册:2002年9月19日
发表于:2004-04-04 22:36:00
1楼
觉得是transfer的速度比convert的速度慢造成的。这样经过几个周期后,就会出错。我估计时间再长点的话,输出又会变成只输出后半缓冲区的数据了。 建议先降低convert的速度看看输出如何。

林海孤叶

  • 精华:2帖
  • 求助:0帖
  • 帖子:15帖 | 53回
  • 年度积分:0
  • 历史总积分:108
  • 注册:2004年2月19日
发表于:2004-04-05 22:16:00
2楼
的确,把频率降低后就好了,但我现在需要输出信号的频率要达到几十K,所以频率必须高,我把前半缓冲区和后半缓冲区的数据设成一样,如需输出一个正弦信号,则各放一个完整的正弦信号,则能够实现,不知这样是否规范。可提供的例子程序我试了下,不管频率多高,都没什么问题,它是使用了NIDAQMakeBuffer()函数来为缓冲区赋值。

林海孤叶

  • 精华:2帖
  • 求助:0帖
  • 帖子:15帖 | 53回
  • 年度积分:0
  • 历史总积分:108
  • 注册:2004年2月19日
发表于:2004-04-07 20:59:00
3楼
但用双缓冲输出时频率不能提的很高,只能达到几百HZ,如高的话远WFM_DB_Transfer()就来不及导入数据了,这远远达不到我的要求, 使用单缓冲模式,也出现问题:[WFM_Check] returned NI-DAQ error –10608. No transfer is in progress for the specified resource 望高手指教!

热门招聘
相关主题

官方公众号

智造工程师