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

📄 lpt.h

📁 构建一个嵌入式系统时
💻 H
字号:

/* 
分级别打印的头文件,包括分级打印的宏定义。

    lpt(lv, ptString)
        task     :打印的任务
        lv       :打印级别
        ptString :打印字符串内容

    lpt1(lv, ptString, para)
        带有一个参数的打印。
        
    lpt2(lv, ptString, para1,para2)
        带有一个参数的打印。

    lpt3(lv, ptString, para1, para2, para3)
        带有一个参数的打印。


创建:李勇 2003/05/16
修改

*/
#ifndef __LPT_H
#define __LPT_H

typedef enum
{
    PT_DEBUG = 0x01,     /* 调试打印  */
    PT_NORMAL = 0x02,    /* 正常有用信息的打印  */
    PT_IMPORT = 0x04,    /* 重要信息的打印  */
    PT_INFO =  0x08,     /* 需要重点关注信息的打印  */
    PT_WARN = 0x10,      /* 告警打印  */
    PT_ERROR = 0x20,     /* 错误打印  */
    PT_FATAL = 0x40,     /* 致命错误的打印 */
    PT_SIGNAL = 0x80    /* 信令跟踪 */
}PRINT_LEVEL;

#define MAX_FILE_NAME_LEN  50  /* 最大文件名长度(包括文件路径) */
#define MAX_PRINT_DATA_LEN 200 /* 一次能打印的最大长度 */
#define PATH_LEN  14

typedef struct
{
    UINT8 taskNo;
    UINT8 printLevel;
    UINT8 fileName[MAX_FILE_NAME_LEN + 1];
    UINT32 lineNo;
    UINT8 printData[MAX_PRINT_DATA_LEN +1];  
    UINT8 trace;
}PRINT_MSG;

extern UINT8 ptDataBuf[1024];
extern UINT8 printData[256 + 1], logData[256 + 1];//256,TASK_NUM系统支持的最大任务数

extern void initPrintData(void);
extern UINT8 getTaskNo();
extern void printAndLog(UINT8 lv, char * file, UINT32 line, char * data);
extern BOOL requirePrintOrLog(UINT8 lv);
UINT32 getFileLen(FILE * p_file);


#define lpt(lv, ptString)\
{\
    if (requirePrintOrLog(lv))\
    {\
        printAndLog(lv, __FILE__, __LINE__, ptString);\
    }\
}

#define lpt1(lv, ptString, para1)\
{\
    if (requirePrintOrLog(lv))\
    {\
        char printDataBuf[1024];\
        sprintf(printDataBuf, ptString, para1);\
        printAndLog(lv, __FILE__, __LINE__, printDataBuf);\
    }\
}

#define lpt2(lv, ptString, para1, para2)\
{\
    if (requirePrintOrLog(lv))\
    {\
        char printDataBuf[1024];\
        sprintf(printDataBuf, ptString, para1, para2);\
        printAndLog(lv, __FILE__, __LINE__, printDataBuf);\
    }\
}

#define lpt3(lv, ptString, para1, para2, para3)\
{\
    if (requirePrintOrLog(lv))\
    {\
        char printDataBuf[1024];\
        sprintf(printDataBuf, ptString, para1, para2, para3);\
        printAndLog(lv, __FILE__, __LINE__, printDataBuf);\
    }\
}

#define lpt4(lv, ptString, para1, para2, para3, para4)\
{\
    if (requirePrintOrLog(lv))\
    {\
        char printDataBuf[1024];\
        sprintf(printDataBuf, ptString, para1, para2, para3, para4);\
        printAndLog(lv, __FILE__, __LINE__, printDataBuf);\
    }\
}

/* printParams所有的参数必须用括号统一括起来,否则无效 */
/* semMptbuf信号量用于打印缓冲区的互斥 */
/* 由于增加了互斥信号量,所以此宏不能在ISR中调用 */
#define pt(lv,printParams)\
{\
   if (requirePrintOrLog(lv))\
   {\
        semTake(semMptbuf, WAIT_FOREVER);\
        ptFormat printParams;\
        printAndLog(lv, __FILE__, __LINE__, ptDataBuf);\
        semGive(semMptbuf);\
   }\
}

#endif

⌨️ 快捷键说明

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