将指针值从python传递给C函数

时间:2014-10-14 14:41:46

标签: python c

我有一个C函数,它接受一个int并通过填充b

中的值返回
typedef   uint8_t State;
#define   STATE_POWERDOWN               ((State) 0x00) 
#define   STATE_SLEEP                   ((State) 0x10) 


int Val_GetStatus(int a , State *b)

此功能与其他功能一起从C DLL导出。

我从python中调用此函数。虽然我能够连接DLL我不明白 如何在python中将变量传递给这个函数?

def Acme_getDeviceStatus(self,DeviceStatus):
    # b 
    self.device.Val_GetStatus(0,b)  # how to pass and get value in b
    # DeviceStatus = b
    # return DeviceStatus somehow 

1 个答案:

答案 0 :(得分:3)

您可以使用例如ctypesswig来调用Python中的C函数。

from ctypes import *

Val_GetStatus= CDLL('x').Val_GetStatus
Val_GetStatus.argtypes = [c_int,POINTER(c_unit8)]
Val_GetStatus.restype = c_int

deviceStatus = ctypes.c_uint8()

print Val_GetStatus(0, byref(deviceStatus))
print deviceStatus.value

Swig将为您生成一种界面,因此您不必手动执行此操作。