没有合适的资源?快使用搜索试试~ 我知道了~
首页使用python来调用CAN通讯的DLL实现方法
资源详情
资源评论
资源推荐

使用使用python来调用来调用CAN通讯的通讯的DLL实现方法实现方法
今天小编就为大家分享一篇使用python来调用CAN通讯的DLL实现方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过
来看看吧
由于工作上的需要,经常要与USBCAN打交道,但厂家一般不会提供PYTHON的例子,于是自己摸索地写一个例子出来,以便在工作上随时可以使用
PYTHON来测试CAN的功能。这里的例子是使用珠海创芯科技有限公司的USBCAN接口卡,他们提供一个ControlCAN.dll,也提供了一个.h文件,如
下:
#ifndef CONTROLCAN_H
#define CONTROLCAN_H
////文件版本:v2.00 20150920
//#include <cvidef.h> //使用CVI平台开发,请使用该语句。
//接口卡类型定义
#define VCI_USBCAN1 3
#define VCI_USBCAN2 4
#define VCI_USBCAN2A 4
#define VCI_USBCAN_E_U 20
#define VCI_USBCAN_2E_U 21
//函数调用返回状态值
#define STATUS_OK 1
#define STATUS_ERR 0
/*------------------------------------------------兼容ZLG的函数及数据类型------------------------------------------------*/
//1.ZLGCAN系列接口卡信息的数据类型。
typedef struct _VCI_BOARD_INFO{
unsigned short hw_Version;
unsigned short fw_Version;
unsigned short dr_Version;
unsigned short in_Version;
unsigned short irq_Num;
unsigned char can_Num;
char str_Serial_Num[20];
char str_hw_Type[40];
unsigned short Reserved[4];
} VCI_BOARD_INFO,*PVCI_BOARD_INFO;
//2.定义CAN信息帧的数据类型。
typedef struct _VCI_CAN_OBJ{
unsigned int ID;
unsigned int TimeStamp;
unsigned char TimeFlag;
unsigned char SendType;
unsigned char RemoteFlag;//是否是远程帧
unsigned char ExternFlag;//是否是扩展帧
unsigned char DataLen;
unsigned char Data[8];
unsigned char Reserved[3];
}VCI_CAN_OBJ,*PVCI_CAN_OBJ;
//3.定义初始化CAN的数据类型
typedef struct _VCI_INIT_CONFIG{
unsigned long AccCode;
unsigned long AccMask;
unsigned long Reserved;
unsigned char Filter;
unsigned char Timing0;
unsigned char Timing1;
unsigned char Mode;
}VCI_INIT_CONFIG,*PVCI_INIT_CONFIG;
///////// new add struct for filter /////////
typedef struct _VCI_FILTER_RECORD{
unsigned long ExtFrame; //是否为扩展帧
unsigned long Start;
unsigned long End;
}VCI_FILTER_RECORD,*PVCI_FILTER_RECORD;
#define EXTERNC extern "C"
EXTERNC unsigned long __stdcall VCI_OpenDevice(unsigned long DeviceType,unsigned long DeviceInd,unsigned long Reserved);
EXTERNC unsigned long __stdcall VCI_CloseDevice(unsigned long DeviceType,unsigned long DeviceInd);
EXTERNC unsigned long __stdcall VCI_InitCAN(unsigned long DeviceType, unsigned long DeviceInd, unsigned long CANInd, PVCI_INIT_CONFIG pInitConfig);
EXTERNC unsigned long __stdcall VCI_ReadBoardInfo(unsigned long DeviceType,unsigned long DeviceInd,PVCI_BOARD_INFO pInfo);
EXTERNC unsigned long __stdcall VCI_SetReference(unsigned long DeviceType,unsigned long DeviceInd,unsigned long CANInd,unsigned long RefType,void* pData);
EXTERNC unsigned long __stdcall VCI_GetReceiveNum(unsigned long DeviceType,unsigned long DeviceInd,unsigned long CANInd);
EXTERNC unsigned long __stdcall VCI_ClearBuffer(unsigned long DeviceType,unsigned long DeviceInd,unsigned long CANInd);
EXTERNC unsigned long __stdcall VCI_StartCAN(unsigned long DeviceType,unsigned long DeviceInd,unsigned long CANInd);
EXTERNC unsigned long __stdcall VCI_ResetCAN(unsigned long DeviceType,unsigned long DeviceInd,unsigned long CANInd);
EXTERNC unsigned long __stdcall VCI_Transmit(unsigned long DeviceType,unsigned long DeviceInd,unsigned long CANInd,PVCI_CAN_OBJ pSend,unsigned long Len);
EXTERNC unsigned long __stdcall VCI_Receive(unsigned long DeviceType,unsigned long DeviceInd,unsigned long CANInd,PVCI_CAN_OBJ pReceive,unsigned long Len,int WaitTime);

















安全验证
文档复制为VIP权益,开通VIP直接复制

评论0