博客
关于我
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中mvcc学习记录
查看>>
mysql中null和空字符串的区别与问题!
查看>>
MySQL中ON DUPLICATE KEY UPDATE的介绍与使用、批量更新、存在即更新不存在则插入
查看>>
MYSQL中TINYINT的取值范围
查看>>
MySQL中UPDATE语句的神奇技巧,让你操作数据库如虎添翼!
查看>>
Mysql中varchar类型数字排序不对踩坑记录
查看>>
MySQL中一条SQL语句到底是如何执行的呢?
查看>>
MySQL中你必须知道的10件事,1.5万字!
查看>>
MySQL中使用IN()查询到底走不走索引?
查看>>
Mysql中使用存储过程插入decimal和时间数据递增的模拟数据
查看>>
MySql中关于geometry类型的数据_空的时候如何插入处理_需用null_空字符串插入会报错_Cannot get geometry object from dat---MySql工作笔记003
查看>>
mysql中出现Incorrect DECIMAL value: '0' for column '' at row -1错误解决方案
查看>>
mysql中出现Unit mysql.service could not be found 的解决方法
查看>>
mysql中出现update-alternatives: 错误: 候选项路径 /etc/mysql/mysql.cnf 不存在 dpkg: 处理软件包 mysql-server-8.0的解决方法(全)
查看>>
Mysql中各类锁的机制图文详细解析(全)
查看>>
MySQL中地理位置数据扩展geometry的使用心得
查看>>
Mysql中存储引擎简介、修改、查询、选择
查看>>
Mysql中存储过程、存储函数、自定义函数、变量、流程控制语句、光标/游标、定义条件和处理程序的使用示例
查看>>
mysql中实现rownum,对结果进行排序
查看>>
mysql中对于数据库的基本操作
查看>>