编辑: huangshuowei01 | 2017-09-24 |
第六节、如何用查询方式取得 DO 数据 当您有了hDevice设备对象句柄后,便可用 InitDeviceDO函数初始化DO部件.您只需要对这个pDOPara参 数结构体的各个成员简单赋值即可实现所有硬件参数和设备状态的初始化.然后用 StartDeviceDO即可启动DO 部件,开始DO采样,然后便可用 WriteDeviceProDO反复读取DO数据以实现连续不间断采样.当您需要暂停设 备时,执行 StopDeviceDO,当您需要关闭DO设备时,ReleaseDevice便可帮您实现.具体执行流程请看下面的 图2.1.4.
第七节、如何用 Dma 直接内存方式取得 DO 数据 当您有了hDevice设备对象句柄后,便可用 InitDeviceDmaDO函数初始化DO部件,关于采样通道、频率等 的参数的设置是由这个函数的pDOPara参数结构体决定的.您只需要对这个pDOPara参数结构体的各个成员简 单赋值即可实现所有硬件参数和设备状态的初始化. 同时应调用 CreateSystemEvent函数创建一个内核事件对象 句柄hDmaEvent赋给 InitDeviceDmaDO的相应参数,它将作为Dma事件的变量.然后用 StartDeviceDmaDO即可 启动DO部件,开始DO采样,接着调用Win32 API函数WaitForSingleObject等待hDmaEvent事件的发生,当当前 缓冲段没有被DMA完成时,自动使所在线程进入睡眠状态(不消耗CPU时间) ,反之,则立即唤醒所在线程, 执行它下面的代码,此时您便可用 GetDevStatusDmaDO来确定哪一段缓冲是新的数据,即刻处理该数据,至到 所有的缓冲段变为旧数据段.然后再回到WaitForSingleObject,就这样反复读取DO数据即可实现连续不间断采 样.当您需要暂停设备时,执行 StopDeviceDmaDO,当您需要关闭DO设备时,ReleaseDeviceDmaDO便可帮您 实现(但设备对象hDevice依然存在) .具体执行流程请看图 2.1.5. 注........