由于工作上的需要,经常要与USBCAN打交道,但厂家一般不会提供PYTHON的例子,于是自己摸索地写一个例子出来,以便在工作上随时可以使用PYTHON来测试CAN的功能。这里的例子是使用珠海创芯科技有限公司的USBCAN接口卡,他们提供一个ControlCAN.dll,也提供了一个.h文件,如下:
#ifndef CONTROLCAN_H
#define CONTROLCAN_H
文件版本:v2.00 20150920
//#include //使用CVI平台开发,请使用该语句。
//接口卡类型定义
#define VCI_USBCAN13
#define VCI_USBCAN24
#define VCI_USBCAN2A4
#define VCI_USBCAN_E_U 20
#define VCI_USBCAN_2E_U 21
//函数调用返回状态值
#defineSTATUS_OK1
#define STATUS_ERR0
/*------------------------------------------------兼容ZLG的函数及数据类型------------------------------------------------*/
//1.ZLGCAN系列接口卡信息的数据类型。
typedef struct _VCI_BOARD_INFO{
unsigned shorthw_Version;
unsigned shortfw_Version;
unsigned shortdr_Version;
unsigned shortin_Version;
unsigned shortirq_Num;
unsigned charcan_Num;
charstr_Serial_Num[20];
charstr_hw_Type[40];
unsigned shortReserved[4];
} VCI_BOARD_INFO,*PVCI_BOARD_INFO;
//2.定义CAN信息帧的数据类型。
typedef struct _VCI_CAN_OBJ{
unsigned intID;
unsigned intTimeStamp;
unsigned charTimeFlag;
unsigned charSendType;
unsigned charRemoteFlag;//是否是远程帧
unsigned charExternFlag;//是否是扩展帧
unsigned charDataLen;
unsigned charData[8];
unsigned charReserved[3];
}VCI_CAN_OBJ,*PVCI_CAN_OBJ;
//3.定义初始化CAN的数据类型
typedef struct _VCI_INIT_CONFIG{
unsigned longAccCode;
unsigned longAccMask;
unsigned longReserved;
unsigned charFilter;
unsigned