DAQNavi的API充分利用了组件思想,以DeviceCtrlBase为基类,派生出模拟输入(AI)、模拟输出(AO)、数字输入或数字输出和计数器的其他功能组件。
WaveformAiCtrl是模拟输入中重要的类,用于Buffered AI。Buffered AI又称高速采集AI,它可以高速传输大量数据,因此采集速度(采样频率)、数据量等是 Instant AI无法满足的。WaveformAiCtrl提供了一些属性和方法来操作这些批量数据的保存和传输。驱动将监控缓冲AI转换的进程,并发送适当的事件来通知用户当前的转换状态,因此在WaveformAiCtrl类中也定义了一些Buffered AI的事件。Buffered AI包括Streaming BufferedAI和One BufferedAI,Streaming BufferedAI为连续采集数据,One BufferedAI为采集一批数据后停止。
Streaming Buffered AI程序开发框图如下:
编程步骤
步骤1:为缓冲的AI功能创建一个“WaveformAiCtrl”。
WaveformAiCtrl::Create();
步骤2:设置通知事件处理程序,通过它我们可以有效地了解操作状态。
addDataReadyHandler为采集导数据时事件,通过此事件获取数据。其他事件为addOverrunHandler,addCacheOverflowHandler,addStoppedHandler
步骤3:根据设备编号或设备描述选择设备,并指定访问模式。在这个例子中,我们使用了ModeWrite模式,这样我们就可以完全控制设备,包括配置、采样等。使用LoadProfile获取采集卡配置参数。
步骤4:参数获取。
使用LoadProfile从xml配置文件(该文件可通过DAQNavi配置工具对采集卡参数设置后保存或通过程序设置)中取出startChannel,channelCount,sectionCount,sectionLength参数用于设置采集的缓冲区。
步骤5:开始采集。
wfAiCtrl->Prepare();wfAiCtrl->Start();
步骤6:主程序进入等待循环,
同时通过在步骤2中创建的OnDataReadyEvent事件处理程序获得数据,如下:
OnDataReady(void * sender, BfdAiEventArgs * args),args->Count为采集到的数据数量,用sender指向该采集卡的数据缓冲区。
步骤7:需要人工停止采集则退出等待循环停止操作。wfAiCtrl->Stop();
步骤8:关闭设备,释放所有分配的资源。
wfAiCtrl->Dispose()
程序变量
程序运行如下
本文分享自 智能制造预测性维护与大数据应用 微信公众号,前往查看
如有侵权,请联系 cloudcommunity@tencent.com 删除。
本文参与 腾讯云自媒体同步曝光计划 ,欢迎热爱写作的你一起参与!