0

我正在尝试在 PyDAQmx 中编写一个程序,该程序计算数字边缘并每隔 n 个边缘输出一个 TTL 信号。我无法将 PyDAQmx 中的采集模式设置为“1 个样本(按需)”,这是我在使用 LabVIEW 时设置的。我正在使用 NI USB6210 DAQ 设备。

这是我第一次使用 NIDAQ/PyDAQMX/etc 进行编码,所以我基于 PyDAQmx 页面上的一个示例,该页面显示了如何将 C 程序转换为 Python,相关的代码如下所示:

read = int32()
data = numpy.zeros((1000,), dtype=numpy.uint32)
try:
    DAQmxCreateTask("",byref(taskHandle))
    DAQmxCreateCICountEdgesChan(taskHandle,"Dev6/ctr0","",DAQmx_Val_Rising,0,DAQmx_Val_CountUp)
    #Somehow set acquisition mode here
    DAQmxStartTask(taskHandle)

while True:

    DAQmxReadCounterScalarU32 (taskHandle, 1000, None, read)
    print "Acquired %d samples"%read.value  
    print "result is %s " %result
4

1 回答 1

0

我的期望是这是计数器输入任务的默认计时模式,您可以通过 DAQmx C API 的Sample Timing Type参数询问驱动程序来确认:

DAQmxCreateTask("",byref(taskHandle))
DAQmxCreateCICountEdgesChan(taskHandle,"Dev6/ctr0","",DAQmx_Val_Rising,0,DAQmx_Val_CountUp)

timingType = int32()
DAQmxGetSampTimingType(taskHandle, byref(timingType))
print(timingType)

如果timingType有值10390,那么你有按需采样。

一般来说,如果没有功能可以满足您的需求(在这种情况下,没有DAQmxCfgOnDemandTiming()功能),您可以假设这是默认配置。此外,DAQmx 函数不会公开设备的所有设置,因此对于非常特殊的行为,您必须明确获取和设置所需的属性。

于 2017-04-17T18:11:24.553 回答