?? can.h
字號:
#ifndef __CAN_H__
#define __CAN_H__
#include "../inc/def.h"
typedef enum{
BandRate_125kbps,
BandRate_250kbps,
BandRate_500kbps,
BandRate_1Mbps
}CanBandRate;
typedef struct {
unsigned int id; //CAN總線ID
unsigned char data[8]; //CAN總線數據
unsigned int dlc; //數據長度
BOOL IsExt; //是否是擴展總線
BOOL rxRTR; //是否是遠程幀
}CanData, *PCanData;
/*********************************************************************\
CAN設備設置接收過濾器結構體
參數: IdMask,Mask
IdFilter,Filter
是否接收數據按照如下規律:
Mask Filter RevID Receive
0 x x yes
1 0 0 yes
1 0 1 no
1 1 0 no
1 1 1 yes
\*********************************************************************/
typedef struct{
unsigned int Mask;
unsigned int Filter;
BOOL IsExt; //是否是擴展ID
}CanFilter,*PCanFilter;
/*********************************************************************\
CAN設備初始化函數
參數: bandrate,CAN波特率
LoopBack,是否是LoopBack模式
pfilter,CAN過濾器結構體指針,
如果為NULL,則接受所有數據
\*********************************************************************/
typedef int (*can_init_func_t)(CanBandRate bandrate, BOOL LoopBack, PCanFilter pfilter);
typedef void (*can_Open_func_t)(void);
typedef void (*can_Close_func_t)(void);
typedef BOOL (*can_read_func_t)(PCanData data, int ntimeout);
typedef int (*can_write_func_t)(PCanData data);
typedef int (*can_flush_input_func_t)(void);
typedef int (*can_flush_output_func_t)(void);
typedef struct {
can_init_func_t init;
can_Open_func_t Open;
can_Close_func_t Close;
can_read_func_t read;
can_write_func_t write;
can_flush_input_func_t flush_input;
can_flush_output_func_t flush_output;
} can_driver_t;
void Init_Can(int ndev, CanBandRate bandrate, PCanFilter pfilter);
void Open_Can(int ndev);
void Close_Can(int ndev);
BOOL CanRead(int ndev, PCanData data, int ntimeout);
void CanSend(int ndev, PCanData data);
#endif
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -