2005-02-21

ctypes で DAQmxBase

ctypes の Mac OS X 版がいつのまにやら出ていました。USB 接続の A/D 変換デバイスのプログラムを、Python から呼び出そうとしたら、Bus Error とやらが出る。ちょっとずつ、やっていこう。ちなみに C では動く。たぶん、ポインタ渡しがおかしいのかな、と勝手に思い込んでいる。




from ctypes import *

DAQmx_Val_Cfg_Default = -1

DAQmx_Val_Volts = 10348

DAQmx_Val_GroupByChannel = 0

pointsToRead = 1

samplesPerChan = 1

timeout = 10.0



DAQmxBase = cdll.LoadLibrary("/Library/Frameworks/nidaqmxbase.framework/nidaqmxbase")



task = c_ulong()

print DAQmxBase.DAQmxBaseCreateTask("hoge", byref(task))

print DAQmxBase.DAQmxBaseCreateAIVoltageChan(task, "Dev1/ai0", "",

DAQmx_Val_Cfg_Default,

c_float(-10.0), c_float(10.0),

DAQmx_Val_Volts, None)

print DAQmxBase.DAQmxBaseStartTask(task)

data = c_double()

pointsRead = c_ulong()



# ↓ここでバスエラーが出る

print DAQmxBase.DAQmxBaseReadAnalogF64(task, pointsToRead, c_float(timeout),

DAQmx_Val_GroupByChannel, byref(data),

samplesPerChan, byref(pointsRead), None)



print DAQmxBase.DAQmxBaseStopTask(task)

print DAQmxBase.DAQmxBaseClearTask(task)