前言:我对 Python 非常熟悉,但直到一周前才接触过 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)