博客
关于我
labwindows/cvi数据采集-DAQ相关函数介绍
阅读量:518 次
发布时间:2019-03-07

本文共 1801 字,大约阅读时间需要 6 分钟。

将完全重组和优化后的高质量内容:

1、错误处理机制 - 使用goto跳转到错误处理函数

技术文档中,DAQmxErrChk函数用于检测函数调用是否失败,若发生错误则跳转到Error函数处理。在代码中,添加上文框架可以帮助确保程序在遇到问题时不会崩溃。

2、任务创建函数

DAQmxCreateTask用于创建DAQmx任务。其原型为int32 DAQmxCreateTask(const char taskName[], TaskHandle *taskHandle)。任务创建后必须及时清理,否则会导致内存泄漏。特别是在多次循环创建任务时,务必在循环体内添加DAQmxClearTask调用,避免资源耗尽。实例中使用gAItaskHandle和gAOtaskHandle作为任务句柄,需注意其在多线程环境下的安全性。

3、输入通道配置

DAQmxCreateAIVoltageChan创建测量电压输入通道。其原型为int32 DAQmxCreateAIVoltageChan(TaskHandle taskHandle, const char physicalChannel[], const char nameToAssignToChannel[], int32 terminalConfig, float64 minVal, float64 maxVal, int32 units, const char customScaleName[])。物理通道名应按设备文档获取,终端配置需根据需求选择,检测范围设置可避免数据失真。注:一个任务可包含多个通道。

4、输出通道配置

DAQmxCreateAOVoltageChan类似于输入通道函数,其函数原型为int32 DAQmxCreateAOVoltageChan(TaskHandle taskHandle, const char physicalChannel[], const char nameToAssignToChannel[], float64 minVal, float64 maxVal, int32 units, const char customScaleName[])。需注意输出和输入通道的配置参数差异,尤其输出电源与反馈拓扑设置。

5、采样时钟配置

DAQmxCfgSampClkTiming设置采样时钟参数。原型为int32 DAQmxCfgSampClkTiming(TaskHandle taskHandle, const char source[], float64 rate, int32 activeEdge, int32 sampleMode, uInt64 sampsPerChanToAcquire)。连续采样通常使用DAQmx_Val_ContSamps模式,频率需验证是否符合驱动要求。源配置,可使用设备内部时钟或外部信号;activeEdge选择电边缘类型。

6、触发与数据传输

illation触发函数如DAQmxCfgDigEdgeStartTrig,可以通过界面引脚设置触发源。此外,数据传输函数如DAQmxWriteAnalogF64和DAQmxReadAnalogF64用于与设备进行数据交互。

7、事件通知机制

DAQmxRegisterDoneEvent注册任务完成回调函数及处理到触发停止任务时不触发。回调函数需正确处理任务状态,防止在多任务环境中数据丢失或资源竞争。实际应用中应确保回调处理简短,可中断性操作。

8、定期事件触发

DAQmxRegisterEveryNSamplesEvent用于设置数据传输的定期事件。调用回调函数在规定数据量或时间后自动触发。需注意回调处理影响数据流程。

编程实践

  • 确保设备驱动和应用程序版本兼容。-合理管理任务句柄,避免内存泄漏。-划分多个小任务,优化数据处理效率。-在数据读取时防止读缓冲区溢出。-单独测试或在现有系统中逐步集成验证。

项目实施步骤

1、编写配置函数调用顺序:创建任务、输入输出通道、设置采样时钟,最后注册回调和事件。2、验证每个函数是否成功如通过DAQmxGetErrorerrickCode函数。3、实现数据读取和处理逻辑,优化数据传输方式。4、测试触发机制,确保设备按预定条件响应。5、调试时间管理,优化性能和延迟。

转载地址:http://mpwnz.baihongyu.com/

你可能感兴趣的文章
mysql insert update 同时执行_MySQL进阶三板斧(三)看清“触发器 (Trigger)”的真实面目...
查看>>
mysql interval显示条件值_MySQL INTERVAL关键字可以使用哪些不同的单位值?
查看>>
Mysql join原理
查看>>
MySQL Join算法与调优白皮书(二)
查看>>
Mysql order by与limit混用陷阱
查看>>
Mysql order by与limit混用陷阱
查看>>
mysql order by多个字段排序
查看>>
MySQL Order By实现原理分析和Filesort优化
查看>>
mysql problems
查看>>
mysql replace first,MySQL中处理各种重复的一些方法
查看>>
MySQL replace函数替换字符串语句的用法(mysql字符串替换)
查看>>
mysql replace用法
查看>>
Mysql Row_Format 参数讲解
查看>>
mysql select, from ,join ,on ,where groupby,having ,order by limit的执行顺序和书写顺序
查看>>
MySQL Server 5.5安装记录
查看>>
mysql server has gone away
查看>>
mysql slave 停了_slave 停止。求解决方法
查看>>
MySQL SQL 优化指南:主键、ORDER BY、GROUP BY 和 UPDATE 优化详解
查看>>
MYSQL sql语句针对数据记录时间范围查询的效率对比
查看>>
mysql sum 没返回,如果没有找到任何值,我如何在MySQL中获得SUM函数以返回'0'?
查看>>