Modify the 'DLT_File' class, rename it to 'DLT_Log' and refactor some of its functionalities. It now supports importing multiple DLT files and count the memory allocation usage
This commit is contained in:
parent
e16e4e0872
commit
809493e134
@ -101,46 +101,42 @@ namespace DLT_Type
|
|||||||
} DLT_Msg_Node;
|
} DLT_Msg_Node;
|
||||||
}
|
}
|
||||||
|
|
||||||
// DLT 文件类
|
// DLT 日志类
|
||||||
class DLT_File
|
class DLT_Log
|
||||||
{
|
{
|
||||||
private:
|
private:
|
||||||
FILE *p_file; // 文件指针
|
size_t loaded_msg_count; // 消息条目计数
|
||||||
size_t msg_count; // 消息条目计数
|
size_t max_payload_len; // 最长载荷长度
|
||||||
size_t payload_max_len; // 最长载荷长度
|
size_t mem_use; // 存储占用
|
||||||
|
|
||||||
DLT_Type::DLT_Msg_Node *Msg_List_Head; // 消息列表
|
DLT_Type::DLT_Msg_Node *Msg_List_Head; // 消息列表头
|
||||||
|
DLT_Type::DLT_Msg_Node *Msg_List_End; // 消息列表尾
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief 读取dlt文件头
|
* @brief 从文件中读取dlt头
|
||||||
|
* @param p_file 要读取的文件
|
||||||
* @param Msg 读取后存储的目标结构体
|
* @param Msg 读取后存储的目标结构体
|
||||||
* @return DLT_Type::DLT_Err 错误类型枚举
|
* @return DLT_Type::DLT_Err 错误类型枚举
|
||||||
*/
|
*/
|
||||||
DLT_Type::DLT_Err dlt_file_read_header(DLT_Type::DLT_Msg *Msg);
|
DLT_Type::DLT_Err dlt_file_read_header(FILE *p_file, DLT_Type::DLT_Msg *Msg);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief 读取dlt文件载荷
|
* @brief 从文件中读取dlt载荷
|
||||||
|
* @param p_file 要读取的文件
|
||||||
* @param Msg 读取后存储的目标结构体
|
* @param Msg 读取后存储的目标结构体
|
||||||
* @return DLT_Type::DLT_Err 错误类型枚举
|
* @return DLT_Type::DLT_Err 错误类型枚举
|
||||||
*/
|
*/
|
||||||
DLT_Type::DLT_Err dlt_file_read_payload(DLT_Type::DLT_Msg *Msg);
|
DLT_Type::DLT_Err dlt_file_read_payload(FILE *p_file, DLT_Type::DLT_Msg *Msg);
|
||||||
|
|
||||||
/**
|
|
||||||
* @brief 解析dlt文件
|
|
||||||
* @param null
|
|
||||||
* @return DLT_Type::DLT_Err 错误类型枚举
|
|
||||||
*/
|
|
||||||
DLT_Type::DLT_Err dlt_file_parse(void);
|
|
||||||
|
|
||||||
public:
|
public:
|
||||||
DLT_File(); // 构造函数
|
DLT_Log(); // 构造函数
|
||||||
~DLT_File(); // 析构函数
|
~DLT_Log(); // 析构函数
|
||||||
/**
|
/**
|
||||||
* @brief 打开DLT文件
|
* @brief 从文件加载DLT消息,多个文件会顺序加入
|
||||||
* @param file_name_str 目标文件名
|
* @param file_name_str 目标文件名
|
||||||
* @return DLT_Type::DLT_Err 错误类型枚举
|
* @return DLT_Type::DLT_Err 错误类型枚举
|
||||||
*/
|
*/
|
||||||
DLT_Type::DLT_Err open(const char *file_name_str);
|
DLT_Type::DLT_Err load_from_file(const char *file_name_str);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief 获取解析完成的消息列表
|
* @brief 获取解析完成的消息列表
|
||||||
|
|||||||
@ -7,7 +7,7 @@ extern "C"
|
|||||||
#include "CSV_Utilities.hpp"
|
#include "CSV_Utilities.hpp"
|
||||||
}
|
}
|
||||||
|
|
||||||
DLT_File File;
|
DLT_Log File;
|
||||||
|
|
||||||
// 命令行处理
|
// 命令行处理
|
||||||
void Pre_Command_Solve(void)
|
void Pre_Command_Solve(void)
|
||||||
@ -47,7 +47,7 @@ void Pre_Command_Solve(void)
|
|||||||
char *strTo = (char *)malloc(size_needed);
|
char *strTo = (char *)malloc(size_needed);
|
||||||
WideCharToMultiByte(CP_UTF8, 0, argv[1], -1, &strTo[0], size_needed, NULL, NULL);
|
WideCharToMultiByte(CP_UTF8, 0, argv[1], -1, &strTo[0], size_needed, NULL, NULL);
|
||||||
|
|
||||||
err = File.open(strTo);
|
err = File.load_from_file(strTo);
|
||||||
|
|
||||||
DLT_Type::DLT_Msg_Node *p_list;
|
DLT_Type::DLT_Msg_Node *p_list;
|
||||||
File.get_msg_list(p_list);
|
File.get_msg_list(p_list);
|
||||||
|
|||||||
@ -8,29 +8,24 @@ extern "C"
|
|||||||
}
|
}
|
||||||
|
|
||||||
// 构造函数
|
// 构造函数
|
||||||
DLT_File::DLT_File()
|
DLT_Log::DLT_Log()
|
||||||
{
|
{
|
||||||
// 初始化内容
|
// 初始化内容
|
||||||
this->p_file = nullptr;
|
this->loaded_msg_count = 0;
|
||||||
this->msg_count = 0;
|
this->max_payload_len = 0;
|
||||||
this->payload_max_len = 0;
|
|
||||||
this->Msg_List_Head = nullptr;
|
this->Msg_List_Head = nullptr;
|
||||||
|
this->Msg_List_End = nullptr;
|
||||||
}
|
}
|
||||||
|
|
||||||
// 析构函数
|
// 析构函数
|
||||||
DLT_File::~DLT_File()
|
DLT_Log::~DLT_Log()
|
||||||
{
|
{
|
||||||
clear();
|
clear();
|
||||||
}
|
}
|
||||||
|
|
||||||
// 清理请求的存储并恢复初始状态
|
// 清理请求的存储并恢复初始状态
|
||||||
void DLT_File::clear(void)
|
void DLT_Log::clear(void)
|
||||||
{
|
{
|
||||||
if (this->p_file != nullptr)
|
|
||||||
{
|
|
||||||
fclose(this->p_file);
|
|
||||||
this->p_file = nullptr;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (this->Msg_List_Head == nullptr)
|
if (this->Msg_List_Head == nullptr)
|
||||||
return;
|
return;
|
||||||
@ -45,13 +40,14 @@ void DLT_File::clear(void)
|
|||||||
}
|
}
|
||||||
|
|
||||||
// 初始化内容
|
// 初始化内容
|
||||||
this->p_file = nullptr;
|
this->loaded_msg_count = 0;
|
||||||
this->msg_count = 0;
|
this->max_payload_len = 0;
|
||||||
this->payload_max_len = 0;
|
this->mem_use = 0;
|
||||||
this->Msg_List_Head = nullptr;
|
this->Msg_List_Head = nullptr;
|
||||||
|
this->Msg_List_End = nullptr;
|
||||||
}
|
}
|
||||||
|
|
||||||
DLT_Type::DLT_Err DLT_File::dlt_file_read_header(DLT_Type::DLT_Msg *Msg)
|
DLT_Type::DLT_Err DLT_Log::dlt_file_read_header(FILE *p_file, DLT_Type::DLT_Msg *Msg)
|
||||||
{
|
{
|
||||||
if (Msg == nullptr)
|
if (Msg == nullptr)
|
||||||
return DLT_Type::DLT_ERROR_NULL_POINTER;
|
return DLT_Type::DLT_ERROR_NULL_POINTER;
|
||||||
@ -60,9 +56,9 @@ DLT_Type::DLT_Err DLT_File::dlt_file_read_header(DLT_Type::DLT_Msg *Msg)
|
|||||||
{
|
{
|
||||||
|
|
||||||
// 读取存储头
|
// 读取存储头
|
||||||
if (fread(&(Msg->storage_header), sizeof(Msg->storage_header), 1, this->p_file) != 1)
|
if (fread(&(Msg->storage_header), sizeof(Msg->storage_header), 1, p_file) != 1)
|
||||||
{
|
{
|
||||||
if (feof(this->p_file))
|
if (feof(p_file))
|
||||||
return DLT_Type::DLT_ERROR_END_OF_FILE;
|
return DLT_Type::DLT_ERROR_END_OF_FILE;
|
||||||
else
|
else
|
||||||
return DLT_Type::DLT_ERROR_FILE_READ_FAILED;
|
return DLT_Type::DLT_ERROR_FILE_READ_FAILED;
|
||||||
@ -76,9 +72,9 @@ DLT_Type::DLT_Err DLT_File::dlt_file_read_header(DLT_Type::DLT_Msg *Msg)
|
|||||||
// 标准头
|
// 标准头
|
||||||
{
|
{
|
||||||
// 读取标准头
|
// 读取标准头
|
||||||
if (fread(&(Msg->standard_header), sizeof(Msg->standard_header), 1, this->p_file) != 1)
|
if (fread(&(Msg->standard_header), sizeof(Msg->standard_header), 1, p_file) != 1)
|
||||||
{
|
{
|
||||||
if (feof(this->p_file))
|
if (feof(p_file))
|
||||||
return DLT_Type::DLT_ERROR_INCOMPLETE_DATA;
|
return DLT_Type::DLT_ERROR_INCOMPLETE_DATA;
|
||||||
else
|
else
|
||||||
return DLT_Type::DLT_ERROR_FILE_READ_FAILED;
|
return DLT_Type::DLT_ERROR_FILE_READ_FAILED;
|
||||||
@ -105,9 +101,9 @@ DLT_Type::DLT_Err DLT_File::dlt_file_read_header(DLT_Type::DLT_Msg *Msg)
|
|||||||
{
|
{
|
||||||
msg_header_len += sizeof(Msg->standard_header_extra.ecu);
|
msg_header_len += sizeof(Msg->standard_header_extra.ecu);
|
||||||
|
|
||||||
if (fread(&(Msg->standard_header_extra.ecu), sizeof(Msg->standard_header_extra.ecu), 1, this->p_file) != 1)
|
if (fread(&(Msg->standard_header_extra.ecu), sizeof(Msg->standard_header_extra.ecu), 1, p_file) != 1)
|
||||||
{
|
{
|
||||||
if (feof(this->p_file))
|
if (feof(p_file))
|
||||||
return DLT_Type::DLT_ERROR_INCOMPLETE_DATA;
|
return DLT_Type::DLT_ERROR_INCOMPLETE_DATA;
|
||||||
else
|
else
|
||||||
return DLT_Type::DLT_ERROR_FILE_READ_FAILED;
|
return DLT_Type::DLT_ERROR_FILE_READ_FAILED;
|
||||||
@ -119,9 +115,9 @@ DLT_Type::DLT_Err DLT_File::dlt_file_read_header(DLT_Type::DLT_Msg *Msg)
|
|||||||
{
|
{
|
||||||
msg_header_len += sizeof(Msg->standard_header_extra.seid);
|
msg_header_len += sizeof(Msg->standard_header_extra.seid);
|
||||||
|
|
||||||
if (fread(&(Msg->standard_header_extra.seid), sizeof(Msg->standard_header_extra.seid), 1, this->p_file) != 1)
|
if (fread(&(Msg->standard_header_extra.seid), sizeof(Msg->standard_header_extra.seid), 1, p_file) != 1)
|
||||||
{
|
{
|
||||||
if (feof(this->p_file))
|
if (feof(p_file))
|
||||||
return DLT_Type::DLT_ERROR_INCOMPLETE_DATA;
|
return DLT_Type::DLT_ERROR_INCOMPLETE_DATA;
|
||||||
else
|
else
|
||||||
return DLT_Type::DLT_ERROR_FILE_READ_FAILED;
|
return DLT_Type::DLT_ERROR_FILE_READ_FAILED;
|
||||||
@ -146,9 +142,9 @@ DLT_Type::DLT_Err DLT_File::dlt_file_read_header(DLT_Type::DLT_Msg *Msg)
|
|||||||
{
|
{
|
||||||
msg_header_len += sizeof(Msg->standard_header_extra.tmsp);
|
msg_header_len += sizeof(Msg->standard_header_extra.tmsp);
|
||||||
|
|
||||||
if (fread(&(Msg->standard_header_extra.tmsp), sizeof(Msg->standard_header_extra.tmsp), 1, this->p_file) != 1)
|
if (fread(&(Msg->standard_header_extra.tmsp), sizeof(Msg->standard_header_extra.tmsp), 1, p_file) != 1)
|
||||||
{
|
{
|
||||||
if (feof(this->p_file))
|
if (feof(p_file))
|
||||||
return DLT_Type::DLT_ERROR_INCOMPLETE_DATA;
|
return DLT_Type::DLT_ERROR_INCOMPLETE_DATA;
|
||||||
else
|
else
|
||||||
return DLT_Type::DLT_ERROR_FILE_READ_FAILED;
|
return DLT_Type::DLT_ERROR_FILE_READ_FAILED;
|
||||||
@ -175,9 +171,9 @@ DLT_Type::DLT_Err DLT_File::dlt_file_read_header(DLT_Type::DLT_Msg *Msg)
|
|||||||
msg_header_len += sizeof(Msg->extendedheader);
|
msg_header_len += sizeof(Msg->extendedheader);
|
||||||
|
|
||||||
// 读取标扩展头
|
// 读取标扩展头
|
||||||
if (fread(&(Msg->extendedheader), sizeof(Msg->extendedheader), 1, this->p_file) != 1)
|
if (fread(&(Msg->extendedheader), sizeof(Msg->extendedheader), 1, p_file) != 1)
|
||||||
{
|
{
|
||||||
if (feof(this->p_file))
|
if (feof(p_file))
|
||||||
return DLT_Type::DLT_ERROR_INCOMPLETE_DATA;
|
return DLT_Type::DLT_ERROR_INCOMPLETE_DATA;
|
||||||
else
|
else
|
||||||
return DLT_Type::DLT_ERROR_FILE_READ_FAILED;
|
return DLT_Type::DLT_ERROR_FILE_READ_FAILED;
|
||||||
@ -188,28 +184,31 @@ DLT_Type::DLT_Err DLT_File::dlt_file_read_header(DLT_Type::DLT_Msg *Msg)
|
|||||||
Msg->payload_length = Msg->standard_header.len - msg_header_len;
|
Msg->payload_length = Msg->standard_header.len - msg_header_len;
|
||||||
|
|
||||||
// 统计最长长度
|
// 统计最长长度
|
||||||
if (Msg->payload_length > this->payload_max_len)
|
if (Msg->payload_length > this->max_payload_len)
|
||||||
this->payload_max_len = Msg->payload_length;
|
this->max_payload_len = Msg->payload_length;
|
||||||
|
|
||||||
return DLT_Type::DLT_ERROR_NONE;
|
return DLT_Type::DLT_ERROR_NONE;
|
||||||
}
|
}
|
||||||
|
|
||||||
DLT_Type::DLT_Err DLT_File::dlt_file_read_payload(DLT_Type::DLT_Msg *Msg)
|
DLT_Type::DLT_Err DLT_Log::dlt_file_read_payload(FILE *p_file, DLT_Type::DLT_Msg *Msg)
|
||||||
{
|
{
|
||||||
if (Msg == nullptr)
|
if (Msg == nullptr)
|
||||||
return DLT_Type::DLT_ERROR_NULL_POINTER;
|
return DLT_Type::DLT_ERROR_NULL_POINTER;
|
||||||
|
|
||||||
// 读取Payload
|
// 读取Payload
|
||||||
Msg->payload_buffer = (uint8_t *)malloc(Msg->payload_length);
|
Msg->payload_buffer = (uint8_t *)malloc(Msg->payload_length);
|
||||||
|
this->mem_use += Msg->payload_length;
|
||||||
|
|
||||||
if (Msg->payload_buffer == nullptr)
|
if (Msg->payload_buffer == nullptr)
|
||||||
return DLT_Type::DLT_ERROR_MEM_ALLOCATE_FAILED;
|
return DLT_Type::DLT_ERROR_MEM_ALLOCATE_FAILED;
|
||||||
|
|
||||||
if (fread(Msg->payload_buffer, Msg->payload_length, 1, this->p_file) != 1)
|
if (fread(Msg->payload_buffer, Msg->payload_length, 1, p_file) != 1)
|
||||||
{
|
{
|
||||||
free(Msg->payload_buffer);
|
free(Msg->payload_buffer);
|
||||||
|
this->mem_use -= Msg->payload_length;
|
||||||
Msg->payload_buffer = nullptr;
|
Msg->payload_buffer = nullptr;
|
||||||
|
|
||||||
if (feof(this->p_file))
|
if (feof(p_file))
|
||||||
return DLT_Type::DLT_ERROR_INCOMPLETE_DATA;
|
return DLT_Type::DLT_ERROR_INCOMPLETE_DATA;
|
||||||
else
|
else
|
||||||
return DLT_Type::DLT_ERROR_FILE_READ_FAILED;
|
return DLT_Type::DLT_ERROR_FILE_READ_FAILED;
|
||||||
@ -218,76 +217,75 @@ DLT_Type::DLT_Err DLT_File::dlt_file_read_payload(DLT_Type::DLT_Msg *Msg)
|
|||||||
return ::DLT_Type::DLT_ERROR_NONE;
|
return ::DLT_Type::DLT_ERROR_NONE;
|
||||||
}
|
}
|
||||||
|
|
||||||
DLT_Type::DLT_Err DLT_File::dlt_file_parse(void)
|
DLT_Type::DLT_Err DLT_Log::load_from_file(const char *file_name_str)
|
||||||
{
|
{
|
||||||
DLT_Type::DLT_Msg_Node *p_list_end = nullptr;
|
// 打开文件
|
||||||
|
FILE *p_file = fopen(file_name_str, "rb");
|
||||||
|
if (p_file == nullptr)
|
||||||
|
return DLT_Type::DLT_ERROR_FILE_OPEN_FAILED;
|
||||||
|
|
||||||
|
// 解析消息内容
|
||||||
|
{
|
||||||
DLT_Type::DLT_Err err = DLT_Type::DLT_ERROR_NONE;
|
DLT_Type::DLT_Err err = DLT_Type::DLT_ERROR_NONE;
|
||||||
while (1)
|
while (1)
|
||||||
{
|
{
|
||||||
DLT_Type::DLT_Msg Msg;
|
DLT_Type::DLT_Msg Msg;
|
||||||
|
|
||||||
err = dlt_file_read_header(&Msg);
|
err = dlt_file_read_header(p_file, &Msg);
|
||||||
if (err != DLT_Type::DLT_ERROR_NONE)
|
if (err != DLT_Type::DLT_ERROR_NONE)
|
||||||
{
|
{
|
||||||
if (err == DLT_Type::DLT_ERROR_END_OF_FILE)
|
if (err == DLT_Type::DLT_ERROR_END_OF_FILE)
|
||||||
break;
|
break;
|
||||||
|
fclose(p_file);
|
||||||
return err;
|
return err;
|
||||||
}
|
}
|
||||||
err = dlt_file_read_payload(&Msg);
|
err = dlt_file_read_payload(p_file, &Msg);
|
||||||
if (err != DLT_Type::DLT_ERROR_NONE)
|
if (err != DLT_Type::DLT_ERROR_NONE)
|
||||||
|
{
|
||||||
|
fclose(p_file);
|
||||||
return err;
|
return err;
|
||||||
|
}
|
||||||
|
|
||||||
|
DLT_Type::DLT_Msg_Node *p_target_msg = (DLT_Type::DLT_Msg_Node *)malloc(sizeof(DLT_Type::DLT_Msg_Node));
|
||||||
|
this->mem_use += sizeof(DLT_Type::DLT_Msg_Node);
|
||||||
|
if (p_target_msg == nullptr)
|
||||||
|
{
|
||||||
|
this->mem_use -= sizeof(DLT_Type::DLT_Msg_Node);
|
||||||
|
fclose(p_file);
|
||||||
|
return DLT_Type::DLT_ERROR_MEM_ALLOCATE_FAILED;
|
||||||
|
}
|
||||||
|
p_target_msg->p_next = nullptr;
|
||||||
|
p_target_msg->Msg = Msg;
|
||||||
|
|
||||||
if (this->Msg_List_Head == nullptr)
|
if (this->Msg_List_Head == nullptr)
|
||||||
{
|
{
|
||||||
this->Msg_List_Head = (DLT_Type::DLT_Msg_Node *)malloc(sizeof(DLT_Type::DLT_Msg_Node));
|
this->Msg_List_Head = this->Msg_List_End = p_target_msg;
|
||||||
if (this->Msg_List_Head == nullptr)
|
|
||||||
return DLT_Type::DLT_ERROR_MEM_ALLOCATE_FAILED;
|
|
||||||
this->Msg_List_Head->p_next = nullptr;
|
|
||||||
this->Msg_List_Head->Msg = Msg;
|
|
||||||
|
|
||||||
p_list_end = Msg_List_Head;
|
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
DLT_Type::DLT_Msg_Node *p_target = (DLT_Type::DLT_Msg_Node *)malloc(sizeof(DLT_Type::DLT_Msg_Node));
|
this->Msg_List_End->p_next = p_target_msg;
|
||||||
if (p_target == nullptr)
|
this->Msg_List_End = p_target_msg;
|
||||||
return DLT_Type::DLT_ERROR_MEM_ALLOCATE_FAILED;
|
|
||||||
p_target->p_next = nullptr;
|
|
||||||
p_target->Msg = Msg;
|
|
||||||
|
|
||||||
p_list_end->p_next = p_target;
|
|
||||||
p_list_end = p_target;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
this->msg_count++;
|
this->loaded_msg_count++;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fclose(p_file);
|
||||||
return DLT_Type::DLT_ERROR_NONE;
|
return DLT_Type::DLT_ERROR_NONE;
|
||||||
}
|
}
|
||||||
|
|
||||||
DLT_Type::DLT_Err DLT_File::open(const char *file_name_str)
|
size_t DLT_Log::get_msg_list(DLT_Type::DLT_Msg_Node *(&p_msg_list))
|
||||||
{
|
{
|
||||||
// 打开文件
|
if (this->loaded_msg_count != 0)
|
||||||
this->p_file = fopen(file_name_str, "rb");
|
|
||||||
if (this->p_file == nullptr)
|
|
||||||
return DLT_Type::DLT_ERROR_FILE_OPEN_FAILED;
|
|
||||||
|
|
||||||
// 求解文件
|
|
||||||
return dlt_file_parse();
|
|
||||||
}
|
|
||||||
|
|
||||||
size_t DLT_File::get_msg_list(DLT_Type::DLT_Msg_Node *(&p_msg_list))
|
|
||||||
{
|
|
||||||
if (this->msg_count != 0)
|
|
||||||
p_msg_list = this->Msg_List_Head;
|
p_msg_list = this->Msg_List_Head;
|
||||||
else
|
else
|
||||||
p_msg_list = nullptr;
|
p_msg_list = nullptr;
|
||||||
|
|
||||||
return this->msg_count;
|
return this->loaded_msg_count;
|
||||||
}
|
}
|
||||||
|
|
||||||
DLT_Type::DLT_Err DLT_File::export_to_csv(const char *file_name_str)
|
DLT_Type::DLT_Err DLT_Log::export_to_csv(const char *file_name_str)
|
||||||
{
|
{
|
||||||
FILE *p_file = fopen(file_name_str, "wb");
|
FILE *p_file = fopen(file_name_str, "wb");
|
||||||
if (p_file == nullptr)
|
if (p_file == nullptr)
|
||||||
@ -297,7 +295,7 @@ DLT_Type::DLT_Err DLT_File::export_to_csv(const char *file_name_str)
|
|||||||
{
|
{
|
||||||
fprintf(p_file, "Index,Date&Time(Local),Timestamp,Count,ECU ID,Application ID,Context ID ,Session ID,Type,Sub Type,Mode,#Args,Payload,");
|
fprintf(p_file, "Index,Date&Time(Local),Timestamp,Count,ECU ID,Application ID,Context ID ,Session ID,Type,Sub Type,Mode,#Args,Payload,");
|
||||||
|
|
||||||
for (size_t count = 0; count < this->payload_max_len; count++)
|
for (size_t count = 0; count < this->max_payload_len; count++)
|
||||||
fprintf(p_file, "B%d,", count);
|
fprintf(p_file, "B%d,", count);
|
||||||
fseek(p_file, -1, SEEK_CUR);
|
fseek(p_file, -1, SEEK_CUR);
|
||||||
fprintf(p_file, "\r\n");
|
fprintf(p_file, "\r\n");
|
||||||
@ -305,7 +303,7 @@ DLT_Type::DLT_Err DLT_File::export_to_csv(const char *file_name_str)
|
|||||||
|
|
||||||
// 遍历每行数据
|
// 遍历每行数据
|
||||||
DLT_Type::DLT_Msg_Node *p_msg = this->Msg_List_Head;
|
DLT_Type::DLT_Msg_Node *p_msg = this->Msg_List_Head;
|
||||||
for (size_t line_count = 0; line_count < this->msg_count; line_count++)
|
for (size_t line_count = 0; line_count < this->loaded_msg_count; line_count++)
|
||||||
{
|
{
|
||||||
|
|
||||||
// 输出索引号
|
// 输出索引号
|
||||||
@ -386,10 +384,12 @@ DLT_Type::DLT_Err DLT_File::export_to_csv(const char *file_name_str)
|
|||||||
fprintf(p_file, "%s,", Type_str[p_msg->Msg.extendedheader.msin.MSTP]);
|
fprintf(p_file, "%s,", Type_str[p_msg->Msg.extendedheader.msin.MSTP]);
|
||||||
fprintf(p_file, "%s,", SubType_Str[p_msg->Msg.extendedheader.msin.MSTP][(p_msg->Msg.extendedheader.msin.MTIN - 1) % 0xF]);
|
fprintf(p_file, "%s,", SubType_Str[p_msg->Msg.extendedheader.msin.MSTP][(p_msg->Msg.extendedheader.msin.MTIN - 1) % 0xF]);
|
||||||
|
|
||||||
// Mode ** #Args
|
// Mode && #Args
|
||||||
fprintf(p_file, "%s,", p_msg->Msg.extendedheader.msin.VERB ? "verbose" : "non-verbose");
|
fprintf(p_file, "%s,", p_msg->Msg.extendedheader.msin.VERB ? "verbose" : "non-verbose");
|
||||||
fprintf(p_file, "%d,", p_msg->Msg.extendedheader.noar);
|
fprintf(p_file, "%d,", p_msg->Msg.extendedheader.noar);
|
||||||
}
|
}
|
||||||
|
else
|
||||||
|
fprintf(p_file, "N/A,N/A,N/A,N/A,");
|
||||||
}
|
}
|
||||||
|
|
||||||
// Payload概览行
|
// Payload概览行
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user