我不能为我的生活弄清楚如何使用National Instruments DAQ mx启用软件触发器。文档含糊地提到属性,或者它只能用于交换设备,但它非常不完整。当然,NI网站上的一个示例页面是完全空白的。我没有或想要LabView。
我只是想设置它以便它同时获取并生成1000个样本。有很多关于模拟或数字硬件触发的文档,但我只是希望能够在同一软件指令上开始生成/获取。
如果我发出两个顺序指令(一个用于生成样本,一个用于获取样本),它可能已经足够好了,但我真的很想做到这一点,因为我不知道启动两个任务之间的时序偏差。
那么如何生成软件触发器以同时启动2个任务?
BTW我在Windows 7 x64上使用PyDAQmx和USB6363设备。
由于
答案 0 :(得分:2)
为了使单个事件同时启动两个任务,两个子系统必须电气同步。有两种方法可以同步子系统,两者都需要共享不同的电信号:
只有第一个,两个任务将在同一时刻开始,但随着时间的推移,它们各自的时钟可能会偏斜或漂移。当在同一设备上时,就像你的情况一样,漂移不可能,因为设备上只有一个振荡器。单个设备在时间上总是自相关的;换句话说,单个设备已经具有同步采样。在同步不同设备时,两者必须共享启动触发和采样时钟信号。
为了使两个任务的启动电气同步,它们必须使用相同的启动触发信号,可以使用设备的内部信号名称从DAQmx API进行编程 [1]
在您的示例中,您希望在软件事件上启动模拟输入和模拟输出任务。 AI和AO子系统必须首先进行电气耦合,然后软件事件才能触发两者的启动。
我意识到你正在使用PyDAQmx,但这里是C中的伪代码(官方API):
TaskHandle analogInputHandle;
TaskHandle analogOutputHandle;
// Other configuration...
// Connect AO start to AI start
DAQmxCfgDigEdgeStartTrig(analogOutputHandle, "ai/StartTrigger", DAQmx_Val_Rising);
// Arm the AO task
// It won't start until the start trigger signal arrives from the AI task
DAQmxStartTask(analogOutputHandle);
// Start the AI task
// This generates the AI start trigger signal and triggers the AO task
DAQmxStartTask(analogInputHandle);
通过这种方式,AI和AO子系统已配置为使用ai/StartTrigger
信号开始执行任务,当程序启动AI任务时,设备会按需生成脉冲并进行两次测量一起开始。
[1] NI-DAQmx帮助::终端名称
http://zone.ni.com/reference/en-XX/help/370466V-01/TOC22.htm