[英]NI DAQmx - how to trigger input channel to read N samples using analog trigger input (python)?
[英]NI DAQmx - Trigger input channel to read N samples using external analog trigger input (python)
我在使用 Python 和 nidaqmx 庫正確觸發模擬輸入通道以讀取 N 個值時遇到問題。 我有兩個模擬輸入通道,ai0 和 ai1。 通道 ai0 是觸發通道,讀取 9V,直到電路連接並且電壓變為 3V。 那一刻,我想從通道 ai1 讀取 N 個樣本。 我想重復這個過程 1 分鍾。 我正在使用 NI USB-6361 daq。
我的代碼在下面,問題是我的代碼不會等到觸發器滿足后才執行讀取任務。 觸發器配置正確,因為如果我刪除 ai1 任務,一旦電壓下降,程序將從通道 ai0 讀取 N 個樣本。 但是,我想從 ai1 讀取信號,但使用 ai0 作為觸發器。 希望這是有道理的,並感謝您的幫助。
import nidaqmx
num_samples = 1000;
s_freq = 1e3;
tend = num_samples/s_freq;
#read from DAQ
def readdaq():
task = nidaqmx.Task()
task.ai_channels.add_ai_voltage_chan("Dev1/ai0",max_val=10, min_val=0)
task.triggers.reference_trigger.cfg_anlg_edge_ref_trig("Dev1/ai0", pretrigger_samples = 10, trigger_slope=nidaqmx.constants.Slope.FALLING, trigger_level = 5)
task.stop()
task.close()
task = nidaqmx.Task()
task.ai_channels.add_ai_voltage_chan("Dev1/ai1",max_val=10, min_val=0)
task.timing.cfg_samp_clk_timing(s_freq, sample_mode=nidaqmx.constants.AcquisitionType.FINITE, samps_per_chan=num_samples)
task.start()
value = task.read(number_of_samples_per_channel=num_samples)
task.stop()
task.close()
return value
我想問題是您沒有將觸發器設置為ai1
通道,而是設置為ai0
通道。 嘗試這個:
def readdaq():
task = nidaqmx.Task()
task.ai_channels.add_ai_voltage_chan("Dev1/ai1",max_val=10, min_val=0)
task.triggers.reference_trigger.cfg_anlg_edge_ref_trig("Dev1/ai0", pretrigger_samples = 10, trigger_slope=nidaqmx.constants.Slope.FALLING, trigger_level = 5)
task.timing.cfg_samp_clk_timing(s_freq, sample_mode=nidaqmx.constants.AcquisitionType.FINITE, samps_per_chan=num_samples)
task.start()
value = task.read(number_of_samples_per_channel=num_samples)
task.stop()
task.close()
return value
所以任務是為通道ai1
創建的,它設置了基於ai0
通道的觸發器。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.