취소
다음에 대한 결과 표시 
다음에 대한 검색 
다음을 의미합니까? 

pause trigger 사용법

안녕하세요,

 

pause trigger를 이용한 DAQ 중 궁금한 점이 생겨 왔습니다.

python 기반으로 개발 중입니다. (USB-6212, NIDAQmx 19.6, python 3.7.6, windows 10)

 

pause trigger를 사용해서 트리거 신호가 low일 동안 AI을 통해 데이타를 받고, high일 때의 데이타는 무시하는 방식으로 DAQ를 하고 싶습니다.

그런데 pause trigger가 걸릴 때마다 콜백함수를 불러 read AI data를 하면 트리거 신호가 low일 때만 read를 하긴 하는데, low일 때의 아날로그 신호 뿐만 아니라 high일 때의 아날로그 신호도 차례로 읽히고 있습니다. 트리거 신호와 상관 없이 버퍼에 차례로 들어 온 데이타가 트리거 신호 low일 때 순차적으로 읽히는 게 아닌가 싶긴 한데, 정확한 동작에 대한 설명이 없어서 맞는지는 모르겠네요.

 

혹시 트리거 신호가 high일 때는 버퍼를 clear 해 주고, low일 때는 데이타를 읽는 방식의 동작이 가능할까요?

 

만약 불가능하다면 어떤 방법으로 하면 좋을까요?

실시간으로 DI 및 AI를 읽어서 DI가 1일 때는 AI를 버리고, 0일 때는 AI를 저장하는 방식도 해 보고 싶은데 콜백함수를 사용하지 않고 연속적으로 읽는 법을 모르겠습니다.

 

아래는 현재 코드의 일부입니다.

 

import PyDAQmx as pydaqmx
import PyDAQmx.DAQmxCallBack as pydaqmxcb
nidaq = ctypes.windll.nicaiu
 
nidaq.DAQmxCreateTask("",ctypes.byref(AItaskHandle))
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.DAQmxCfgSampClkTiming(AItaskHandle,"",float64(sampleRate),DAQmx_Val_Rising,DAQmx_Val_ContSamps,uInt64(max_num_samples)) #혹시 여기서 DAQAmx_Val_ContiSamps를 사용한 것이 문제가 되려나요? 테스트 해 봐야겠네요.
 
nidaq.DAQmxSetDigLvlPauseTrigSrc(AItaskHandle, b"/Dev%d/PFI0" %num)
nidaq.DAQmxSetPauseTrigType(AItaskHandle, DAQmx_Val_DigLvl)
nidaq.DAQmxSetDigLvlPauseTrigWhen(AItaskHandle, DAQmx_Val_High)
nidaq.DAQmxRegisterEveryNSamplesEvent(AItaskHandle,1,1000,0,EveryNCallback,id_AIdata)
 
그리고 EveryNCallback은
def EveryNCallback_py(taskHandleeventTypenSamplescallbackData_ptr
 

😞  ( ) : 가 이모티콘으로 바뀌어서 나오네요 ㅎㅎ;)

 

DAQmx_Val_GroupByScanNumber = 1
 
callbackData = pydaqmxcb.get_callbackdata_from_id(callbackData_ptr)
read = uInt32()

nidaq.DAQmxReadAnalogF64(taskHandle,samples_per_chan,float64(-1),DAQmx_Val_GroupByScanNumber,AIdata.ctypes.data,Length,ctypes.byref(read),None)
 
return 0

EveryNCallback = pydaqmx.DAQmxEveryNSamplesEventCallbackPtr(EveryNCallback_py)
 
 
감사합니다.
0 포인트
1/2 메시지
1,521 조회수

데이타를 잘못 보았네요;

이 질문은 넘겨주시기 바랍니다.

삭제가 불가능해서 일단 놔두겠습니다.

0 포인트
2/2 메시지
1,491 조회수