📄 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 char 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 void (*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 + -