[求助]如何使用研华USB-4716采集卡,采用MFC实现外触发多通道数据采集。

redleafe 2010-02-19 11:41:37
[求助]如何使用研华USB-4716采集卡,采用MFC实现外触发、多通道数据采集。

我需要使用研华USB-4716采集卡,采用MFC实现外触发、多通道数据采集。参照了研华自带的MAD_INT,但它不是基于MFC的。我在启动监视事件的多线程时实现不了,是我的多线程方面的技术不行。希望有用USB-4716采用MFC实现过外触发多通道数据采集的大侠给点指点,或者给个例程。
MAD_INT例程的思想是响应FIFO半满事件后调用读取函数,将FIFO中的数据读取到用户缓存中。我想,这件事有没有可能交给驱动程序来做,不需要用户自己去监视FIFO半满事件并做处理?
在未半满的情况下,如果需要将已采集到得所有数据一次读入的话,如何处理?

期待有经验的大侠指点。
分不够我再增加,目前只能发100分的帖子。
谢谢。
...全文
727 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
redleafe 2010-02-23
  • 打赏
  • 举报
回复
谢谢LS,我采用了方案1的修改,采用补充多余数的方式达到FIFO半满,然后取数。正在测试,但愿能行得通。
biam6ndtrd 2010-02-22
  • 打赏
  • 举报
回复
引用 1 楼 redleafe 的回复:
  今天研究了一下,USB-4716板载FIFO是1K,同时还有两个缓存区,一个是采集缓存区,由驱动程序负责将FIFO中的采集到的数在FIFO半满时转存到采集缓存区,采集缓存区最大不得超过65535字节。第二个是用户缓存区,需要用户响应采集缓存区的半满事件自己将采集缓存中的数据转移到用户缓存区中,进行读取。
  目前还未解决,强行读数时,如何将FIFO中采集到的未达到半满的数据先让驱动程序转存至采集缓存区,然后由用户自己将存储在用户缓存区中的本次采集中所有采集到的数据全部读取出来。
  期待有经验的大侠指点。 


研华的驱动程序本身就禁止用户访问FIFO,所以对于FIFO中的数据,你只能忘却......

方案1:采用FIFO,设置多通道采集时发出事件时的采集数量,即采集到指定数据就发送事件,然后你响应事件。
方案2:禁用FIFO,直接存储到采集缓冲区,前提是有可能会丢数。
方案3:换采集卡,不要用USB的,目前好像还没见到那个USB采集卡提供了这种应用方式。


redleafe 2010-02-21
  • 打赏
  • 举报
回复
谢谢LS,研华的支持工程师最近一直未能解决,
说明天他们休假的最牛的工程师将亲自出马,期待能解决。
yhp1888 2010-02-21
  • 打赏
  • 举报
回复
用研华自带的SDK、帮助、例程,自己写,还有,问研华的支持工程师
redleafe 2010-02-20
  • 打赏
  • 举报
回复
今天研究了一下,USB-4716板载FIFO是1K,同时还有两个缓存区,一个是采集缓存区,由驱动程序负责将FIFO中的采集到的数在FIFO半满时转存到采集缓存区,采集缓存区最大不得超过65535字节。第二个是用户缓存区,需要用户响应采集缓存区的半满事件自己将采集缓存中的数据转移到用户缓存区中,进行读取。
目前还未解决,强行读数时,如何将FIFO中采集到的未达到半满的数据先让驱动程序转存至采集缓存区,然后由用户自己将存储在用户缓存区中的本次采集中所有采集到的数据全部读取出来。
期待有经验的大侠指点。

2,640

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 硬件/系统
社区管理员
  • 硬件/系统社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧