NIDAQmx计数器输入边缘计数源从PFI0改PFI1代码失效问题咨询
问题根因
你设置计数终端的方式不符合NI-DAQmx Python API的设计规范,两个核心原因导致配置不生效:
ci_count_edges_term不是官方推荐的修改计数输入源的公开可写属性,部分NI采集卡不支持通过该属性修改配置- 即使修改属性,也需要传入完整的终端路径(格式为
/设备名/终端名),仅写PFI1会导致API无法匹配到对应设备的终端
解决方案
推荐直接在创建边缘计数通道时通过edge_source参数指定输入源,该方式兼容性最高,所有支持边缘计数的NI采集卡都可以生效。
修改后的代码如下:
import nidaqmx def read_position(): task = nidaqmx.Task() task.ci_channels.add_ci_count_edges_chan( counter="Dev1/ctr0", edge_source="/Dev1/PFI1" # 传入完整终端路径 ) task.start() pos = task.read() task.stop() task.close() return pos
额外注意事项
- 如果你有动态切换计数源的需求,必须先停止当前运行的任务,修改配置后再重新启动任务,运行状态的任务不支持修改计数源配置
- 所有终端配置都建议写完整路径,避免多设备场景下出现配置匹配错误的问题
内容的提问来源于stack exchange,提问作者Szilard Szocs
相关产品推荐
相关产品推荐

