c++ DLT日志文件解析

lmvvr0a8  于 11个月前  发布在  其他
关注(0)|答案(1)|浏览(123)

在阅读DLT日志后,我想解析它并将其存储在我想要的字段中。它从来不是DLT VIEWER实现。我只是想读取日志,然后将日志保存在我的结构中。
已经实现了向DLT数据库的输出。
目前我已经实现了以下代码来读取DLT日志。

FILE *pLogFile = NULL;
pLogFile = fopen(DLTfilename, "rb") ;
if ( pLogFile )
{
    while ( fgets( buff, gBuffSize, pLogFile ) )
    {
        for ( int i=0; i < gBuffSize - 13 ; ++i )
        {
            // LF
            if ( buff[i] ==  0x0A )
            {
                break ;
            }
        //...............
        //read and save
        //...............
        }
    }
}

字符串
上面的代码扫描每个字节,直到找到所需的字符串,但它是如此之慢!我正在寻找一种方法来优化它。
我尝试了几种方法来阅读每一行,但我不能像“\n”那样将其作为分隔符阅读,当我用记事本这样的程序阅读时,我注意到字符是混合的。
我有两个问题。
1.我想知道DLT日志的格式。
我在互联网上搜索,但我不能得到任何关于它的结构的线索。
1.如果你是一个阅读过DLT日志的开发人员,我想知道如何改进上面的代码。
这足以让我知道我可以参考哪些网站。

3wabscal

3wabscal1#

1. DLT日志格式基本结构:header + payload

Autosar std 20-11术语:

Log and trace message:
A log and trace message contains all data and options to describe a log
and trace event in a software. A log and trace message consists of a
header and payload.

字符串
表头:

+Pattern: DLT0x01
+Broken time (ISO C)
+Microsecond of broken time
+Epoch of system/Timestamp
+Msg counter
+ECU ID
+APP ID
+Info of msg type and length
+Verbose status
+Number of arguments


在页眉中:标准页眉+扩展页眉

更多信息:

DLt plugin (javascript), also doing the same parsing work (50% progress)
DLT specification doc Autosar standard R20-11
Message format (5.1) in R20-11 Autosar protocolv1

2.优化代码:

我建议研究一些dlt_client实现,包括它们的解码机制(dlt-receive -a、dlt-viewer、dlt-convert -a等)

相关问题