안녕하세요,
AI와 DI 동시(샘플링에 따른 시간차 있어도 됨)에 DAQ 하는 방법이 궁금해 질문 올립니다.
환경은 USB-6361, python 3.7.6, windows 10, NIMAX 19.6 입니다.
꼭 파이썬이 아니어도 텍스트 코딩하는 아이디어가 있으시면 알려주심 감사하겠습니다.
아래와 같이 코딩을 해 보았는데, DI는 0만 나오는 상황입니다.
sampleRate은 1M 입니다.
nidaq.DAQmxCreateAIVoltageChan(AItaskHandle,b"Dev%d/ai0,Dev%d/ai2" %(num,num),"",DAQmx_Val_Diff,float64(-5.0),float64(5.0),DAQmx_Val_Volts,None)
nidaq.DAQmxCreateDIChan(DItaskHandle,b"Dev%d/PFI0,Dev%d/PFI1" %(num,num),"",DAQmx_Val_ChanPerLine)
nidaq.DAQmxCfgSampClkTiming(AItaskHandle,"",float64(sampleRate),DAQmx_Val_Rising,DAQmx_Val_ContSamps,uInt64(1000000))
nidaq.DAQmxCfgSampClkTiming(DItaskHandle,"Dev%d/ai/SampleClock" %num,float64(sampleRate),DAQmx_Val_Rising,DAQmx_Val_ContSamps,uInt64(1000000))
nidaq.DAQmxStartTask( DItaskHandle )
nidaq.DAQmxStartTask( AItaskHandle )
while True:
readAI = uInt32()
readDI = uInt32()
bytesPerSamps = uInt32()
nidaq.DAQmxReadAnalogF64(AItaskHandle,samples_per_chan,float64(-1),DAQmx_Val_GroupByScanNumber,AIdata.ctypes.data,Length,ctypes.byref(readAI),None)
# timeout은 둘 다 -1, 0, 1 등의 조합으로 바꿔보아도 DI는 0만 나옵니다. nidaq.DAQmxReadDigitalLines(DItaskHandle,samples_per_chan,float64(0),DAQmx_Val_GroupByScanNumber,DIdata.ctypes.data,Length,ctypes.byref(readDI),ctypes.byref(bytesPerSamps),None)
혹시 추가적인 정보가 필요하시면 알려주세요.
감사합니다.