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)