⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 can.h

📁 基于CAN总线的NMEA2000协议
💻 H
字号:
//#ifdef __cplusplus
//     #define EXPORTS "C" __declspec (dllexport)
//#else
//     #define EXPORTS __declspec (dllexport)
//#endif
//
#ifdef __cplusplus
     #define EXPORTS extern "C" __declspec (dllexport)
#else
     #define EXPORTS
#endif

#ifndef DWORD
#define DWORD unsigned long
#endif

#ifndef WORD
#define WORD unsigned short
#endif

#ifndef BYTE
#define BYTE unsigned char
#endif

//====================
#define CAN_NoError                    0
#define CAN_DriverError                1
#define CAN_ActiveBoardError           2
#define CAN_BoardNumberError           3
#define CAN_PortNumberError            4 
#define CAN_ResetError                 5
#define CAN_SoftResetError             6
#define CAN_InitError                  7       
#define CAN_ConfigError                8
#define CAN_SetACRError                9
#define CAN_SetAMRError                10
#define CAN_SetBaudRateError           11

#define CAN_EnableRxIrqFailure         12
#define CAN_DisableRxIrqFailure        13
#define CAN_InstallIrqFailure          14 
#define CAN_RemoveIrqFailure           15

#define CAN_TransmitBufferLocked       16
#define CAN_TransmitIncomplete         17
#define CAN_ReceiveBufferEmpty         18
#define CAN_DataOverrun                19
#define CAN_ReceiveError               20
#define CAN_SoftBufferIsEmpty          21
#define CAN_SoftBufferIsFull           22

typedef struct config
{
	BYTE AccCode[4];
	BYTE AccMask[4];
	BYTE BaudRate;
	BYTE BT0,BT1;
} ConfigStruct;

//BaudRate 0:user define 1=10K   2=20K   3=50K  4=125K  5=250K  6=500K 7=800K  8=1Mbps

typedef struct packet
{	
	LONGLONG MsgTimeStamps;
	BYTE  mode;
	DWORD id;
	BYTE  rtr;
	BYTE  len;
	BYTE  data[8];
} PacketStruct;

//mode 0 -> 11 bits ID    1 -> 29 bits ID    


EXPORTS WORD CALLBACK CAN_GetDllVersion();
EXPORTS int CALLBACK CAN_TotalBoard();
EXPORTS int CALLBACK CAN_GetBoardInf(BYTE BoardNo, DWORD *dwVID, DWORD *dwDID,
									DWORD *dwSVID, DWORD *dwSDID,DWORD *dwSAuxID,
						            DWORD* dwIrqNo);

EXPORTS int CALLBACK CAN_ActiveBoard(BYTE BoardNo);
EXPORTS int CALLBACK CAN_CloseBoard(BYTE BoardNo);
EXPORTS int CALLBACK CAN_BoardIsActive(BYTE BoardNo);

EXPORTS int CALLBACK CAN_Reset(BYTE BoardNo,BYTE Port);
EXPORTS int CALLBACK CAN_Init(BYTE BoardNo,BYTE Port);
EXPORTS int CALLBACK CAN_Config(BYTE BoardNo, BYTE Port,ConfigStruct *CanConfig);

EXPORTS int CALLBACK CAN_EnableRxIrq(BYTE BoardNo,BYTE Port);
EXPORTS int CALLBACK CAN_DisableRxIrq(BYTE BoardNo,BYTE Port);
EXPORTS int CALLBACK CAN_RxIrqStatus(BYTE BoardNo,BYTE Port,BYTE *bStatus);
EXPORTS int CALLBACK CAN_InstallIrq(BYTE BoardNo);
EXPORTS int CALLBACK CAN_RemoveIrq(BYTE BoardNo);
EXPORTS int CALLBACK CAN_IrqStatus(BYTE BoardNo,BYTE *bStatus);

EXPORTS int CALLBACK CAN_Status(BYTE BoardNo, BYTE Port,BYTE *bStatus);

EXPORTS int CALLBACK CAN_SendMsg(BYTE BoardNo, BYTE Port, PacketStruct *CanPacket);
EXPORTS int CALLBACK CAN_RxMsgCount(BYTE BoardNo, BYTE Port);
EXPORTS int CALLBACK CAN_ReceiveMsg(BYTE BoardNo, BYTE Port,PacketStruct *CanPacket);

EXPORTS int CALLBACK CAN_ClearSoftBuffer(BYTE BoardNo, BYTE Port);
EXPORTS int CALLBACK CAN_ClearDataOverrun(BYTE BoardNo, BYTE Port);

EXPORTS void CALLBACK CAN_OutputByte(BYTE BoardNo,BYTE Port,WORD wOffset,BYTE bValue);
EXPORTS BYTE CALLBACK CAN_InputByte(BYTE BoardNo,BYTE Port,WORD wOffset);
EXPORTS LONGLONG CALLBACK CAN_GetSystemFreq(void);

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -