Я пытаюсь получить данные, используя метод обратного вызова, и обнаружил PyDAQmx. Я преобразовал PyDAQmx 1.4.3 с использованием 2to3 и установил его для использования на python 3.7.6 (32 бита), windows 10, NIDAQ USB-6212, NIDAQmx 19,6
Я ссылался на https://pythonhosted.org/PyDAQmx/callback.html
Я написал код, как показано ниже, используя PyDAQmx, но он выдает ошибку.
from PyDAQmx import *
from PyDAQmx.DAQmxCallBack import *
class MyList(list):
pass
def EveryNCallback_py(taskHandle, eventType, nSamples, callbackData_ptr):
callbackData = get_callbackData_from_id(callbackData_ptr)
read = uInt32()
nidaq.DAQmxReadAnalogF64(AItaskHandle,samples_per_chan,float64(-1),DAQmx_Val_GroupByScanNumber,AIdata.ctypes.data,Length,ctypes.byref(read),None)
if(read>0):
print('Acquired %d samples.' %read)
return 0
EveryNCallback = pydaqmx.DAQmxEveryNSamplesEventCallbackPtr(EveryNCallback_py)
def some_func(num):
... # some other code including import, declare variables like DAQmx_Val_Acquired_Into_Buffer, etc...
AIdata = MyList()
AIdata = numpy.zeros( ( max_num_samples, ), dtype=numpy.float64 )
AIdata_dummy = numpy.zeros( ( max_num_samples, ), dtype=numpy.float64 )
Length = AIdata.size
samples_per_chan = round(max_num_samples/2)
id_a = create_callbackdata_id(AIdata)
AItaskHandle = TaskHandle( 0 )
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))
nidaq.DAQmxSetDigLvlPauseTrigSrc(AItaskHandle, b"/Dev%d/PFI0" %num)
nidaq.DAQmxSetPauseTrigType(AItaskHandle, DAQmx_Val_DigLvl)
nidaq.DAQmxSetDigLvlPauseTrigWhen(AItaskHandle, DAQmx_Val_High)
DAQmxRegisterEveryNSamplesEvent(AItaskHandle,DAQmx_Val_Acquired_Into_Buffer,1000,0,EveryNCallback,id_a)
nidaq.DAQmxStartTask( AItaskHandle )
И если я запускаю этот код, он выдает мне следующую ошибку.
Traceback (most recent call last):
File ~~~, line 118, in some_func
pydaqmx.DAQmxRegisterEveryNSamplesEvent(AItaskHandle,DAQmx_Val_Acquired_Into_Buffer,1000,0,EveryNCallback,id_a)
File "<string>", line 2, in function
File "C:\Users\JungEun.Suh\AppData\Local\Programs\Python\Python37-32\lib\site-packages\pydaqmx-1.4.3-py3.7.egg\PyDAQmx\DAQmxFunctions.py", line 57, in mafunction
error = f(*arg)
ctypes.ArgumentError: argument 1: <class 'TypeError'>: wrong type
Ты хоть представляешь, что здесь не так? Пожалуйста, дайте мне знать, если вам нужна дополнительная информация.
Заранее спасибо!