序文: 私は Python にかなり精通していますが、1 週間前まで C に触れたことがありませんでした... 今、ctypes を使用してモーター コントローラーに話しかけようとしています。
そのため、この特定の関数 (VCS_GetProtocolStackSettings) をいじっていましたが、つい最近まで動作させることができませんでした。私の問題は、「1」を返していますが (つまり、以下の仕様では成功しています)、戻りパラメーターにアクセスできないようです。
これが私のコードです。uint32 オブジェクトへのポインターに戻りパラメーターを格納していることがわかりますが、それらを取得する方法がわかりません。
lib=ctypes.WinDLL('C:\\Program Files (x86)\\maxon motor ag\\EPOS Positioning Controller\\EPOS2\\04 Programming\\Windows DLL\\EposCmd64.dll')
typeDict={ 'char': ctypes.c_char,
'char*': ctypes.c_char_p,
'__int8': ctypes.c_int8,
'BYTE': ctypes.c_uint8,
'short': ctypes.c_int16,
'WORD': ctypes.c_uint16,
'long': ctypes.c_int32,
'DWORD': ctypes.c_uint32,
'BOOL': ctypes.c_int32,
'HANDLE': ctypes.POINTER(ctypes.c_uint32)
}
def VCS_GetProtocolStackSettings(KeyHandle):
'''Returns the communication parameters 'baudrate and
'timeout'
'''
func=lib['VCS_GetProtocolStackSettings']
func.argtypes
func.restype=typeDict['BOOL']
pBaudrate=ctypes.pointer(typeDict['DWORD']())
pTimeout=ctypes.pointer(typeDict['DWORD']())
pErrorCode=ctypes.pointer(typeDict['DWORD']())
cKeyHandle=typeDict['HANDLE'](KeyHandle)
return func(KeyHandle,pBaudrate,pTimeout,pErrorCode)