资源简介

单片机接收数据帧帧头帧尾校验数据解析C语言,采用VS2010编译器书写,已经通过验证,单片机里面也十分实用。双向链表方法。

资源截图

代码片段和文件信息

/* main.c */

#include 
#include “parser.h“

int main()
{
    uint8 i;
    // 数据头
    uint8 data_header[5] = {0xAA 0xAA 0x04 0x80 0x02};
uint8 data_footer[2] = {0xA5 0X5A};
    // 要解析的数据,测试用
    uint8 data[] = {
        0xAA 0xAA 0x04 0x80 0x02 0x00 0x02 0x7B 0xA5 0X5A
0xAA 0xAA 0x04 0x80 0x02 0x00 0x08 0x75 0xA5 0X5A 
0xAA 0xAA 0x04 0x80 0x02 0x00 0x9B 0xE2 0xA5 0X5A
        0xAA 0xAA 0x04 0x80 0x02 0x00 0xF6 0x87 0xA5 0X5A
0xAA 0xAA 0x04 0x80 0x02 0x00 0xEC 0x91 0xA5 0X5A
0xAA 0xAA 0x04 0x80 0x02 0x01 0x15 0x67 0xA5 0X5A
        0xAA 0xAA 0x04 0x80 0x02 0x01 0x49 0x33 0xA5 0X5A 
0xAA 0xAA 0x04 0x80 0x02 0x00 0xE7 0x96 0xA5 0X5A 
0xAA 0xAA 0x04 0x80 0x02 0x00 0x68 0x15 0xA5 0X5A
        0xAA 0xAA 0x04 0x80 0x02 0x00 0x3C 0x41 0xA5 0X5A
0xAA 0xAA 0x04 0x80 0x02 0x00 0x66 0x17 0xA5 0X5A 
0xAA 0xAA 0x04 0x80 0x02 0x00 0xA5 0xD8 0xA5 0X5A
        0xAA 0xAA 0x04 0x80 0x02 0x01 0x26 0x56 0xA5 0X5A 
0xAA 0xAA 0x04 0x80 0x02 0x01 0x73 0x09 0xA5 0X5A 
0xAA 0xAA 0x04 0x80 0x02 0x01 0x64 0x18 0xA5 0X5A
        0xAA 0xAA 0x04 0x80 0x02 0x01 0x8B 0xF1 0xA5 0X5A 
0xAA 0xAA 0x04 0x80 0x02 0x01 0xC6 0xB6 0xA5 0X5A 
0xAA 0xAA 0x04 0x80 0x02 0x01 0x7B 0x01 0xA5 0X5A
        0xAA 0xAA 0x04 0x80 0x02 0x00 0xCB 0xB2 0xA5 0X5A 
0xAA 0xAA 0x04 0x80 0x02 0x00 0x2C 0x51 0xA5 0X5A 
0xAA 0xAA 0x04 0x80 0x02 0xFF 0xE5 0x99 0xA5 0X5A
    };

    /**
     * 初始化一个解析器
     * 第一个参数是数据头
     * 第二个参数是数据头长度
     * 第三个参数是数据尾指针
     * 第四个参数是数据尾大小
     * 第五个参数是一整帧数据的大小
     */
    DataParser *data_parser = parser_init(data_header sizeof(data_header) data_footer sizeof(data_footer) 10);

    // 将要解析的数据逐个取出,添加到解析器中
    for(i = 0; i < sizeof(data); i++)
    {
        // 解析数据,返回 RESULT_TRUE 代表成功解析出一组数据
        if(parser_put_data(data_parser data[i]) == RESULT_TRUE)
        {
            printf(“成功解析出一帧数据...\n“);

            /* 一位一位取出解析后的数据 */
            printf(“第一个数据是:0x%x\n“ parser_get_data(data_parser 0));
            printf(“第二个数据是:0x%x\n“ parser_get_data(data_parser 1));
            printf(“第三个数据是:0x%x\n\n\n“ parser_get_data(data_parser 2));
        }
    }

    // 当不再需要解析器时,应该把解析器释放掉,回收内存,避免造成内存泄漏
    parser_release(data_parser);

while(1);

    return 0;
}

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----
     目录           0  2018-02-17 09:14  queue\
     目录           0  2018-02-17 10:00  queue\queue\
     目录           0  2018-02-17 09:38  queue\queue\Debug\
     文件       32256  2018-02-17 09:51  queue\queue\Debug\queue.exe
     文件      317684  2018-02-17 09:51  queue\queue\Debug\queue.ilk
     文件      420864  2018-02-17 09:51  queue\queue\Debug\queue.pdb
     目录           0  2018-02-17 09:15  queue\queue\ipch\
     目录           0  2018-02-17 09:17  queue\queue\ipch\queue-7f1e603\
     文件     1441792  2018-02-17 09:50  queue\queue\ipch\queue-7f1e603\queue-e1da8591.ipch
     目录           0  2018-02-17 09:24  queue\queue\queue\
     目录           0  2018-02-17 09:51  queue\queue\queue\Debug\
     文件        2940  2018-02-17 09:51  queue\queue\queue\Debug\CL.read.1.tlog
     文件        1440  2018-02-17 09:51  queue\queue\queue\Debug\CL.write.1.tlog
     文件        7141  2018-02-17 09:51  queue\queue\queue\Debug\app.obj
     文件        1894  2018-02-17 09:51  queue\queue\queue\Debug\cl.command.1.tlog
     文件           2  2018-02-17 09:51  queue\queue\queue\Debug\link-cvtres.read.1.tlog
     文件           2  2018-02-17 09:51  queue\queue\queue\Debug\link-cvtres.write.1.tlog
     文件           2  2018-02-17 09:51  queue\queue\queue\Debug\link.7576-cvtres.read.1.tlog
     文件           2  2018-02-17 09:51  queue\queue\queue\Debug\link.7576-cvtres.write.1.tlog
     文件           2  2018-02-17 09:51  queue\queue\queue\Debug\link.7576.read.1.tlog
     文件           2  2018-02-17 09:51  queue\queue\queue\Debug\link.7576.write.1.tlog
     文件           2  2018-02-17 09:51  queue\queue\queue\Debug\link.8064-cvtres.read.1.tlog
     文件           2  2018-02-17 09:51  queue\queue\queue\Debug\link.8064-cvtres.write.1.tlog
     文件           2  2018-02-17 09:51  queue\queue\queue\Debug\link.8064.read.1.tlog
     文件           2  2018-02-17 09:51  queue\queue\queue\Debug\link.8064.write.1.tlog
     文件        1716  2018-02-17 09:51  queue\queue\queue\Debug\link.command.1.tlog
     文件        3162  2018-02-17 09:51  queue\queue\queue\Debug\link.read.1.tlog
     文件         922  2018-02-17 09:51  queue\queue\queue\Debug\link.write.1.tlog
     文件         366  2018-02-17 09:51  queue\queue\queue\Debug\mt.command.1.tlog
     文件         298  2018-02-17 09:51  queue\queue\queue\Debug\mt.read.1.tlog
     文件         298  2018-02-17 09:51  queue\queue\queue\Debug\mt.write.1.tlog
............此处省略26个文件信息

评论

共有 条评论