如果您希望在Python上通过X Series DAQ数采卡实现一个简单的counter任务,且希望此任务由trigger触发,请参考以下步骤:
1. 硬件连线以PXIe-6368为例,若您想使用Gate 0实现无缓冲边沿计数任务,则需要将暂停触发接到Gate 0的Gate接线端,将待测信号接到Gate 0的源输入端。
具体PXIe-6368的端口请参照下图:
值得一提的是,对于X系列数采卡,counter支持三种触发选项,分别是arm start trigger, start trigger和pasue trigger。这三种trigger适用场景各不相同,在本例子中,我们采用的是pause trigger。关于这三种触发选项的具体介绍请参照
X Series User Manual 中的Counter Triggering章节。
2. 代码编写您需要先安装nidaqmx package来在Python中使用相关的驱动。
以PXIe-6368为例,请您参照下图代码。其中关于配置上升沿/下降沿,pause trigger类型和工作方式的方法和参数,请您参照
NI-DAQmx Python Documentation 。
"""Example of CI edge count operation."""
import pprint
import time
import nidaqmx
pp = pprint.PrettyPrinter(indent=4)
with nidaqmx.Task() as task:
task.ci_channels.add_ci_count_edges_chan("/6368/ctr0")
# Configure the count edges term (source terminal)
task.ci_channels.count_edges_term = "/6368/PFI8" # 这里改成您要测的信号源接口
# Configure the active edge (rising or falling edge)
task.ci_channels.count_edges_active_edge = nidaqmx.constants.Edge(10280) # 上升沿测
# Configure the pause trigger
task.triggers.pause_trigger.trig_type = nidaqmx.constants.TriggerType(10152) #选择pause trigger中的digital level类型
#根据您的描述您要在高电平触发采集,低电平停止,这个trigger接在Gate,您根据您需求改这个源
task.triggers.pause_trigger.dig_lvl_src = "/6368/PFI9"
#这里选择在trigger source为低的时候停止
task.triggers.pause_trigger.dig_lvl_when = nidaqmx.constants.Level(10214)
task.start()
n=0
while True:
n=n+1
print(str(n)+" : 1 Channel 1 Sample Read: ")
data = task.read()
pp.pprint(data)
time.sleep (1)
# print("1 Channel N Samples Read: ")
# data = task.read(number_of_samples_per_channel=8)
# pp.pprint(data)