CTypes の DLL から 2 つの関数を使用する必要があります。これらの関数にはvoid*
as 引数があります。でも、どう頑張ってもうまくいかない。間違った型を使用しているというエラーが表示されます。多くの投稿を見てドキュメントを読みましたが、わかりません。どんな助けでも大歓迎です。WindowsでPython 2.7を使用しています。
私のC関数は次のとおりです。
void WriteRam(unsigned address, unsigned length, void* buffer)
void ReadRam(unsigned address, unsigned length, void* buffer)
Python では、次のようにリストを関数に渡そうとしています。
audioVolume = 32767
for i in range(buffSize):
txBuff.append(int(audioVolume * math.sin(i)) )
WriteRam(0, 64, txBuff)
私のPython関数は次のとおりです。
WriteRam = DPxDll['DPxWriteRam']
def DPxWriteRam(address=None, length=None, buffer=None):
#test = ctypes.c_void_p.from_buffer(buffer) # not working
#p_buffer = ctypes.cast(buffer, ctypes.c_void_p) # not working
p_buffer = ctypes.cast(ctypes.py_object(buffer), ctypes.c_void_p) # not working
#p_buffer = ctypes.c_void_p() # not working
WriteRam.argtypes = [ctypes.c_uint, ctypes.c_uint, ctypes.c_void_p]
WriteRam(address, length, ctypes.byref(p_buffer))