我无法在 NIDAQ usb6002 上执行我认为应该是一项非常简单的任务:我有一个低频正弦波,我正在模拟输入通道上测量,当它越过零时,我想点亮一个LED 1 秒。我正在尝试使用 nidaqmx Python API,但无法通过文档解决我的一些基本问题。https://nidaqmx-python.readthedocs.io/en/latest/
如果有人可以提供有关代码或我设置的基本逻辑的任何想法,那将非常有帮助。
这是我到目前为止所尝试的。我从一些导入和我的频道的定义开始:
import matplotlib.pyplot as plt
from math import *
import nidaqmx
from nidaqmx import *
from nidaqmx.constants import *
import time
V_PIN = "Dev1/ai6"
LED_PIN = "Dev1/ao0"
我了解任务和事物的一般工作方式——我可以使用 task.ai_channels 方法读取和绘制给定采样率和样本数量的信号,而不会遇到任何麻烦。但这是我对如何执行“检测零并触发输出”的最佳猜测:
writeLED = nidaqmx.Task('LED')
writeLED.ao_channels.add_ao_voltage_chan(LED_PIN)
writeLED.timing.cfg_samp_clk_timing(1)
writeLED.triggers.start_trigger.cfg_anlg_edge_start_trig(V_PIN,trigger_level = 0)
writeLED.write([5], auto_start=True)
这给了我下面 cfg_anlg_edge 行的错误
DaqError: Requested value is not a supported value for this property. The property value may be invalid because it conflicts with another property.
Property: DAQmx_StartTrig_Type
Requested Value: DAQmx_Val_AnlgEdge
Possible Values: DAQmx_Val_DigEdge, DAQmx_Val_None
我不知道为什么这里不支持模拟输入通道。本文档的第 245 页听起来应该是:https ://media.readthedocs.org/pdf/nidaqmx-python/latest/nidaqmx-python.pdf
我确信代码也存在其他问题。例如,采样时钟的操作似乎比我上面写的要复杂得多,但我找不到任何解释它在这种情况下如何工作的东西。
提前感谢您的帮助!