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

📄 rd_useserialframe_proc.h

📁 LCD1602键盘显示模块实例
💻 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 + -