📄 rd_useserialframe_proc.h
字号:
#ifndef _USE_SEIRAL_FRAME_PROC_H_
#define _USE_SEIRAL_FRAME_PROC_H_
/***********************************************************
* 声明库说明:串行通信数据帧处理函数声明库 *
* 版本: v1.00 *
* 作者: 王卓然 *
* 创建日期: 2007年4月6日 *
* -------------------------------------------------------- *
* [支 持 库] *
* 支持库名称: *
* 需要版本: *
* 支持库名称: *
* -------------------------------------------------------- *
* [版本更新] *
* 修改: *
* 修改日期: *
* 版本: *
* -------------------------------------------------------- *
* [版本历史] *
* -------------------------------------------------------- *
* [使用说明] *
***********************************************************/
/********************
* 头 文 件 配 置 区 *
********************/
/********************
* 系 统 宏 定 义 *
********************/
/*------------------*
* 常 数 宏 定 义 *
*------------------*/
/*------------------*
* 动 作 宏 定 义 *
*------------------*/
# define START_DEFINE_SERIAL_FRAME_PROCESS(Name,Size,MsgMap) SERIAL_FRAME_PROCESS SFP##Name;\
uint8 SFP##Name##Buffer[(Size)];\
uint8 SFP##Name##MsgItem[(Size)];\
void SFP_##Name##_INIT(void)\
{\
SERIAL_FRAME_PROCESS *pSFP = &SFP##Name;\
pSFP->pMsgMap = &(MsgMap);\
SET_ADT_QUEUE\
(\
SFP##Name.FrameBuffer,\
SFP##Name##Buffer,\
(Size),\
ADT_QUEUE_DEFAULT_ADD_TO_BUFFER_FUNCTION,\
ADT_QUEUE_DEFAULT_GET_FROM_BUFFER_FUNCTION,\
ADT_QUEUE_DEFAULT_CHECK_EMPTY_FUNCTION,\
ADT_QUEUE_DEFAULT_PEEK_FROM_BUFFER_FUNCTION\
)\
pSFP->MsgItem.pData = SFP##Name##MsgItem;\
pSFP->cHeadByte = 0xaa;\
pSFP->cEndByte = 0x55;\
pSFP->cFixLength = 0;\
pSFP->cAddress = 0;\
pSFP->cActionFlag = 0;\
pSFP->cXORCheck = 0;\
pSFP->cFrameSize = 0;\
pSFP->InputDataFunc = SFP_NULL_Input_Data_Function;\
pSFP->OutputDataFunc = SFP_NULL_Output_Data_Function;\
pSFP->PeekDataFunc = SFP_NULL_Peek_Data_Function;
# define SET_HEAD_BYTE(Byte) pSFP->cHeadByte = (Byte);
# define SET_END_BYTE(Byte) pSFP->cEndByte = (Byte);
# define SET_FRAME_FIXED_SIZE(Size) pSFP->cFixLength = (Size);
# define SET_ADDRESS(Addr) pSFP->cAddress = ((Addr) & 0x7f) | BIT(7);
# define SET_INPUT_DATA_FUNCTION(Func) pSFP->InputDataFunc = &(Func);
# define SET_OUTPUT_DATA_FUNCTION(Func) pSFP->OutputDataFunc = &(Func);
# define SET_PEEK_DATA_FUNCTION(Func) pSFP->PeekDataFunc = &(Func);
# define END_DEFINE_SERIAL_FRAME_PROCESS }
# define INIT_SERIAL_FRAME_PROCESS(Name) SFP_##Name##_INIT();
# define SERIAL_FRAME_PROCESS(Name) Serial_Frame_Process(&SFP##Name)
# define SERIAL_FRAME_PROC(Name) SFP##Name
/********************
* 用户变量类型定义 *
********************/
typedef struct SerialFrameProcess SERIAL_FRAME_PROCESS;
/********************
* 结构体定义区 *
********************/
struct SerialFrameProcess
{
ADT_QUEUE FrameBuffer;
MSG_MAP *pMsgMap;
MSG_ITEM MsgItem;
uint8 cHeadByte;
uint8 cEndByte;
uint8 cFixLength;
uint8 cAddress; //有待扩展
BOOL (*InputDataFunc)(uint8 *pData);
BOOL (*OutputDataFunc)(uint8 cData);
BOOL (*PeekDataFunc)(uint8 *pData);
uint8 cActionFlag;
uint8 cXORCheck;
uint8 cFrameSize;
};
/********************
* 函 数 引 用 区 *
********************/
/********************
* 全局变量引用区 *
********************/
extern void Serial_Frame_Process(SERIAL_FRAME_PROCESS *pSFP);
extern BOOL SFP_NULL_Output_Data_Function(uint8 cData);
extern BOOL SFP_NULL_Input_Data_Function(uint8 *pData);
extern BOOL SFP_NULL_Peek_Data_Function(uint8 *pData);
extern BOOL SPF_Send_MSG(SERIAL_FRAME_PROCESS *pSFP,
uint8 cCMD,uint8 *pMSG,uint8 Length);
#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -