用python的ctypes库调用dll文件,c#是结构体传参,python怎么传参,用过元组,字典,类,都无法识别
c#的代码示例如下,中间是结构体
#include "ECanVci.h"
int nDeviceType = 3; // USBCAN-I
int nDeviceInd = 0; // 索引号为0
int nCANInd = 0;
int nReserved = 0;
DWORD dwRel;
//结构体
INIT_CONFIG init_config;
init_config.AccCode = 0;
init_config.AccMask =0xffffff;
init_config.Filter = 0;
//500k
init_config.Timing0 = 0;
init_config.Timing1 = 0x1c;
init_config.Mode = 0;
//结构体
dwRel = InitCAN(nDeviceType, nDeviceInd, nCANInd,&init_config)
nDeviceType = 4 # 设备类型号。USBCAN I 选择3,USBCAN II 选择4。
nDeviceInd = 0 #设备索引号,比如当只有一个设备时,索引号为0,有两个时可以为0或1
nCANInd = 0 #第几路CAN。即对应卡的CAN通道号,CAN0为0,CAN1为1。
nReserved =0 #参数无意义。
#有问题的传参
class INIT_CONFIG:
AccCode=0
AccMask=ctypes.c_int(0xffffff)
Filter=0
Timing0=0
Timing1=ctypes.c_int(0x1c)
Mode=0
init_config = INIT_CONFIG()
#有问题的传参
init = vc_dll.InitCAN(nDeviceType,nDeviceInd,nCANInd, init_config)
报错如下:
ArgumentError: argument 4: <class 'TypeError'>: Don't know how to convert parameter 4
怎么才能用python,代替c#的结构体传参?