#pragma once #include "DLLModule.h" //#include "..\\StringExt.h" //函数调用返回状态值 #define STATUS_OK 1 #define STATUS_ERR1 0//操作失败 #define STATUS_ERR2 -1 //设备未打开 //定义全局的帧数据类型 typedef struct _VCI_CAN_OBJ{ UINT ID; UINT TimeStamp; BYTE TimeFlag; BYTE SendType; BYTE RemoteFlag;//是否是远程帧 BYTE ExternFlag;//是否是扩展帧 BYTE DataLen; BYTE Data[8]; BYTE Reserved[3]; BYTE IDArray[4]; }VCI_CAN_OBJ,*PVCI_CAN_OBJ; //定义全局的错误数据类型 typedef struct _VCI_ERR_INFO{ UINT ErrCode; BYTE Passive_ErrData[3]; BYTE ArLost_ErrData; } VCI_ERR_INFO,*PVCI_ERR_INFO; //定义全局的初始化数据类型 typedef struct _VCI_INIT_CONFIG{ DWORD AccCode; DWORD AccMask; DWORD Reserved; UCHAR Filter; UCHAR Timing0; UCHAR Timing1; UCHAR Mode; UCHAR CanRx_IER; UCHAR kCanBaud; }VCI_INIT_CONFIG,*PVCI_INIT_CONFIG; //定义全局CAN控制器状态的数据类型 typedef struct _VCI_CAN_STATUS{ UCHAR ErrInterrupt; UCHAR regMode; UCHAR regStatus; UCHAR regALCapture; UCHAR regECCapture; UCHAR regEWLimit; UCHAR regRECounter; UCHAR regTECounter; DWORD Reserved; }VCI_CAN_STATUS,*PVCI_CAN_STATUS; class CCAN { public: CCAN(); virtual ~CCAN(); // *GetCAN(); public: virtual BOOL OpenDevice(DWORD devInd) = 0; virtual void CloseDevice(DWORD devInd) = 0; virtual BOOL InitCAN(DWORD devInd, DWORD CANInd, PVCI_INIT_CONFIG pInitConfig) = 0; virtual BOOL StartCAN(DWORD devInd, DWORD CANInd) = 0; virtual BOOL ResetCAN(DWORD devInd, DWORD CANInd) = 0; virtual void ReadErrInfo(DWORD devInd, DWORD CANInd, PVCI_ERR_INFO pErrInfo) = 0; virtual BOOL ClearBuffer(DWORD devInd, DWORD CANInd) = 0; virtual ULONG GetReceiveNum(DWORD devInd, DWORD CANInd) = 0; virtual ULONG Transmit(DWORD devInd, DWORD CANInd, PVCI_CAN_OBJ pSend,ULONG Len) = 0; virtual ULONG Receive(DWORD devInd, DWORD CANInd, PVCI_CAN_OBJ pReceive,ULONG Len, INT WaitTime=-1) = 0; virtual BOOL LoadDLL() = 0; protected: private: };