次の問題が発生しました:
データ取得パッドを制御するために c タイプの nicaiu.dll をロードし、NI-USB6218
それを初期化するためにいくつかの関数を呼び出す必要があります(DAQmxCreateTask(), DAQmxCreateAIVoltageChan() and DAQmxCfgSampClkTiming()
)。
最初の 2 つの呼び出しは機能しますがDAQmxCfgSampClkTiming()
、このエラーが発生します
Traceback (most recent call last):
File "C:/*********/Voltage.py", line 68, in <module>
values)
ctypes.ArgumentError: argument 6: <type 'exceptions.TypeError'>: Don't know how to convert
parameter 6
パラメータ 6 は uint64 である必要があります。ドキュメントを参照してください 。これは私の関数呼び出しです。
DAQmx_Val_Rising = 10280 #see NIDAQmx.h
DAQmx_Val_FiniteSamps = 10178 # see NIDAQmx.h
values = uint64(40000) #numpy function
dll.DAQmxCfgSampClkTiming(taskHandle, "OnboardClock", c_float(4000.0), DAQmx_Val_Rising, DAQmx_Val_FiniteSamps,
values)
私も試し values = c_uint64(40000)
ましたがうまくいきませんでした。
Edit1: dll は System32 フォルダーにあります (Win7)
dll = cdll.nicaiu
たとえば、この関数呼び出しは機能します (戻り値 = 0)
DAQmx_Val_Diff = 10106
DAQmx_Val_RSE = 10083
DAQmx_Val_Volts = 10348
returnvalue = dll.DAQmxCreateAIVoltageChan(taskHandle, "Dev1/ai1", taskName, DAQmx_Val_RSE,
c_float(-1.0),c_float(1.0), DAQmx_Val_Volts, None)
編集2:
argtypes 行を追加
dll.DAQmxCfgSampClkTiming.argtypes = [c_int, c_char_p, c_float, c_int32, c_int32, c_uint64]
returnvalue = dll.DAQmxCfgSampClkTiming(taskHandle, None, c_float(4000.0), DAQmx_Val_Rising,
DAQmx_Val_FiniteSamps,values)
それでもエラー コード -200077 が表示される このコードの定義は次のとおりです。
nierror code = -200077
Requested value is not a supported value for this property. The property value may be invalid
because it conflicts with another property.