모두 Python과 DAQmx Base를 사용하여 아날로그 입력을 기록하고 USB 6009 장치에서 아날로그 출력을 생성하려고합니다. 나는 래퍼를 사용하여 AI를 얻을 수 있었지만 AO와 어려움을 겪고있다. 작업 생성 등을 처리하는 기본 클래스 NITask가 있습니다. 내가 호출하는 클래스는 아래에 있습니다. 시계를 구성하려고 할 때이 함수는 오류를 발생시킵니다. 내가하지 않으면 오류가 없지만 출력에 전압이 생성되지 않습니다. 어떤 도움을 주시면 감사하겠습니다.Mac OSX에서 Python과 NIDAQmx 기반을 사용하는 USB6009의 아날로그 출력
감사합니다.
class AOTask(NITask):
def __init__(self, min=0.0, max=5.0,
channels=["Dev1/ao0"],
timeout=10.0):
NITask.__init__(self)
self.min = min
self.max = max
self.channels = channels
self.timeout = timeout
self.clockSource ="OnboardClock"
sampleRate=100
self.sampleRate = 100
self.timeout = timeout
self.samplesPerChan = 1000
self.numChan = chanNumber(channels)
if self.numChan is None:
raise ValueError("Channel specification is invalid")
chan = ", ".join(self.channels)
self.CHK(self.nidaq.DAQmxBaseCreateTask("",ctypes.byref(self.taskHandle)))
self.CHK(self.nidaq.DAQmxBaseCreateAOVoltageChan(self.taskHandle, "Dev1/ao0", "", float64(self.min), float64(self.max), DAQmx_Val_Volts, None))
self.CHK(self.nidaq.DAQmxBaseCfgSampClkTiming(self.taskHandle, "", float64(self.sampleRate), DAQmx_Val_Rising, DAQmx_Val_FiniteSamps, uInt64(self.samplesPerChan)))
"""Data needs to be of type ndarray"""
def write(self, data):
nWritten = int32()
# data = numpy.float64(3.25)
data = data.astype(numpy.float64)
self.CHK(self.nidaq.DAQmxBaseWriteAnalogF64(self.taskHandle,
int32(1000), 0,float64(-1),DAQmx_Val_GroupByChannel,
data.ctypes.data,None,None))
# if nWritten.value != self.numChan:
# print "Expected to write %d samples!" % self.numChan
찾은 래퍼에 대한 링크를 게시 할 수 있습니까? 비슷한 환경에서 일하는 다른 사람들에게 도움이 될 것입니다. –