汽车电子 -- CAN文件格式ASC

Vector提供了两种记录数据格式的格式规范:BLF和ASC。
先讲讲ASC。
参看:图文详解CAN Log文件 - ASC文件格式

一、ASC文件格式

在Vector提供的 CAN_LOG_TRIGGER_ASC_Format.pdf 提取码:ltjv 文件中,规定了CANoe/CANalyzer ASC记录中CAN、Log和Trigger event的格式。

1、Header

一个ASCII格式的日志文件以一个header开始。header包含关于日志文件的一般信息。
在这里插入图片描述

  • base:表示记录的数值是hex十六进制或dec十进制的符号。
  • timestamps:表示时间戳是absolute绝对写入测量的开始时间还是relative相对于前一个事件。
  • internal:events logged表示是否记录了内部事件。

2、版本编号

从CANalyzer/CANoe v7.0开始,版本号以注释的形式写在Header之后:
在这里插入图片描述

  • < major >.< minor >表示CANalyzer/CANoe的版本号
  • < patch >表示CANalyzer/CANoe主版本中的修改版本(如服务包中的修改)。

3、经典CAN网络中的描述

二、C语言组包ASC文件

CAN2.0格式 ASC

double timeStamps = 0;
FILE* fp1 = fopen(FileName[filecnt], "a");
if (fp1 != NULL)
{if (timeStamps == 0){fprintf(fp1, "base hex timestamps absolute\n");fprintf(fp1, "internal events logged\n");fprintf(fp1, "// version 8.2.1\n");}timeStamps += 0.03;const char* tail = "   244000  126   200000     7e04 51200550 4b140250";//ASCfor (int i = 0; i < 3; i++){fprintf(fp1, "  %0.6f CANFD   1 Rx        %x            0 0 8  8 %02x %02x %02x %02x %02x %02x %02x %02x %s\n", (timeStamps + i * 0.0001f), (0x750 + i * 3), \SendBuffer[(i * 3)][0], SendBuffer[(i * 3)][1], SendBuffer[(i * 3)][2], SendBuffer[(i * 3)][3], SendBuffer[(i * 3)][4], SendBuffer[(i * 3)][5], SendBuffer[(i * 3)][6], SendBuffer[(i * 3)][7], tail);timeStamps += 0.0002;fprintf(fp1, "  %0.6f CANFD   1 Rx        %x            0 0 8  8 %02x %02x %02x %02x %02x %02x %02x %02x %s\n", (timeStamps + i * 0.0001f), (0x751 + i * 3), \SendBuffer[(i * 3) + 1][0], SendBuffer[(i * 3) + 1][1], SendBuffer[(i * 3) + 1][2], SendBuffer[(i * 3) + 1][3], SendBuffer[(i * 3) + 1][4], SendBuffer[(i * 3) + 1][5], SendBuffer[(i * 3) + 1][6], SendBuffer[(i * 3) + 1][7], tail);timeStamps += 0.0002;fprintf(fp1, "  %0.6f CANFD   1 Rx        %x            0 0 8  8 %02x %02x %02x %02x %02x %02x %02x %02x %s\n", (timeStamps + i * 0.0001f), (0x752 + i * 3), \SendBuffer[(i * 3) + 2][0], SendBuffer[(i * 3) + 2][1], SendBuffer[(i * 3) + 2][2], SendBuffer[(i * 3) + 2][3], SendBuffer[(i * 3) + 2][4], SendBuffer[(i * 3) + 2][5], SendBuffer[(i * 3) + 2][6], SendBuffer[(i * 3) + 2][7], tail);timeStamps += 0.0002;}/* In order to be compatible with the final result and make a unified interface, the selection target is taken as the clustering result here, and the selection cluster is set to a fixed value */fclose(fp1);

生成ASC:

base hex timestamps absolute
internal events logged
// version 8.2.10.030000 CANFD   1 Rx        700            0 0 8  8 00 ff 00 ff ff ff 03 00    244000  126   200000     7e04 51200550 4b1402500.030200 CANFD   1 Rx        701            0 0 8  8 00 ff ff ff ff ff ff 03    244000  126   200000     7e04 51200550 4b1402500.030400 CANFD   1 Rx        702            0 0 8  8 00 ff ff 00 00 00 00 00    244000  126   200000     7e04 51200550 4b1402500.030700 CANFD   1 Rx        703            0 0 8  8 00 ff 00 ff ff ff 01 00    244000  126   200000     7e04 51200550 4b140250

CAN FD格式 ASC

double timeStamps = 0;
/*  将结果输出  */
FILE* fp1 = fopen(FileName[filecnt], "a");
if (fp1 != NULL)
{if (timeStamps == 0){fprintf(fp1, "base hex timestamps absolute\n");fprintf(fp1, "internal events logged\n");fprintf(fp1, "// version 8.2.1\n");}timeStamps += 0.0014;const char* tail = "  0  665   303000 a8093377 46500250 4b280150";fprintf(fp1, "  %0.6f CANFD   1 Rx      %x            1 0 f 64 %02x %02x %02x %02x %02x %02x %02x %02x ", (timeStamps + i * 0.0001f), tempCAN.ID, \tempCAN.Data[0], tempCAN.Data[1], tempCAN.Data[2], tempCAN.Data[3], tempCAN.Data[4], tempCAN.Data[5], tempCAN.Data[6], tempCAN.Data[7]);fprintf(fp1, "%02x %02x %02x %02x %02x %02x %02x %02x ", \tempCAN.Data[8], tempCAN.Data[9], tempCAN.Data[10], tempCAN.Data[11], tempCAN.Data[12], tempCAN.Data[13], tempCAN.Data[14], tempCAN.Data[15]);fprintf(fp1, "%02x %02x %02x %02x %02x %02x %02x %02x ", \tempCAN.Data[16], tempCAN.Data[17], tempCAN.Data[18], tempCAN.Data[19], tempCAN.Data[20], tempCAN.Data[21], tempCAN.Data[22], tempCAN.Data[23]);fprintf(fp1, "%02x %02x %02x %02x %02x %02x %02x %02x ", \tempCAN.Data[24], tempCAN.Data[25], tempCAN.Data[26], tempCAN.Data[27], tempCAN.Data[28], tempCAN.Data[29], tempCAN.Data[30], tempCAN.Data[31]);fprintf(fp1, "%02x %02x %02x %02x %02x %02x %02x %02x ", \tempCAN.Data[32], tempCAN.Data[33], tempCAN.Data[34], tempCAN.Data[35], tempCAN.Data[36], tempCAN.Data[37], tempCAN.Data[38], tempCAN.Data[39]);fprintf(fp1, "%02x %02x %02x %02x %02x %02x %02x %02x ", \tempCAN.Data[40], tempCAN.Data[41], tempCAN.Data[42], tempCAN.Data[43], tempCAN.Data[44], tempCAN.Data[45], tempCAN.Data[46], tempCAN.Data[47]);fprintf(fp1, "%02x %02x %02x %02x %02x %02x %02x %02x ", \tempCAN.Data[48], tempCAN.Data[49], tempCAN.Data[50], tempCAN.Data[51], tempCAN.Data[52], tempCAN.Data[53], tempCAN.Data[54], tempCAN.Data[55]);fprintf(fp1, "%02x %02x %02x %02x %02x %02x %02x %02x%s\n", \tempCAN.Data[56], tempCAN.Data[57], tempCAN.Data[58], tempCAN.Data[59], tempCAN.Data[60], tempCAN.Data[61], tempCAN.Data[62], tempCAN.Data[63], tail);/* In order to be compatible with the final result and make a unified interface, the selection target is taken as the clustering result here, and the selection cluster is set to a fixed value */fclose(fp1);

生成ASC:

base hex timestamps absolute
internal events logged
// version 8.2.10.007800 CANFD   1 Rx      400            1 0 f 64 8e 00 67 24 01 f3 18 00 a1 1a fe c0 08 00 40 00 8e 01 67 24 01 ff fc 00 87 8b 58 80 08 00 40 00 8e 02 67 24 01 f5 20 00 83 bb 8e 40 08 00 40 00 8e 03 e4 f4 00 10 04 00 b4 93 11 00 08 00 40 00  0  665   303000 a8093377 46500250 4b2801500.009200 CANFD   1 Rx      401            1 0 f 64 8e 04 e4 c4 00 50 e8 00 ae 13 8d c0 07 ff bf fc 8e 05 e4 3c 00 70 2c 00 b2 a2 fa 00 07 ff bf fc 8e 06 66 ec 00 11 10 00 f5 6c 3b 00 08 00 3f fc 8e 07 e7 ec 00 10 08 00 9b 55 61 80 08 00 40 00  0  665   303000 a8093377 46500250 4b2801500.010600 CANFD   1 Rx      402            1 0 f 64 8e 08 66 a4 01 10 70 00 c4 33 a4 40 07 ff bf f0 8e 09 65 bc 00 50 40 00 b5 93 95 80 07 ff bf f8 8e 0a 67 24 01 10 c0 00 c4 13 9f 40 08 00 40 00 8e 0b e4 cc 00 10 10 00 c8 64 55 40 08 00 40 00  0  665   303000 a8093377 46500250 4b2801500.012000 CANFD   1 Rx      403            1 0 f 64 8e 0c 67 24 01 ff fc 00 84 3b 8a 80 08 00 40 00 8e 0d 67 24 01 ef fc 00 88 4b 24 80 08 00 40 00 8e 0e e7 b4 00 30 34 00 c4 03 9c 00 08 00 40 00 8e 0f eb ec 00 60 20 00 cb 94 f1 00 08 7e 41 90  0  665   303000 a8093377 46500250 4b280150

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/204153.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

<Linux>(极简关键、省时省力)《Linux操作系统原理分析之linux存储管理(3)》(19)

《Linux操作系统原理分析之linux存储管理&#xff08;3&#xff09;》&#xff08;19&#xff09; 6 Linux存储管理6.4 Linux 的分段和分页结构6.4.1Linux 的分段结构6.4.2 Linux 的三级分页结构6.4.3 内核页表和进程页表 6 Linux存储管理 6.4 Linux 的分段和分页结构 本节主…

微服务实战系列之Redis

前言 云淡天高&#xff0c;落木萧萧&#xff0c;一阵西北风掠过&#xff0c;似寒刀。冬天渐渐变得更名副其实了&#xff0c;“暖冬”的说法有点言过其实了。——碎碎念 微服务实战系列之Cache微服务实战系列之Nginx&#xff08;技巧篇&#xff09;微服务实战系列之Nginx微服务实…

多屏模式输入法可以正确切换屏幕展示原理剖析

背景 hi&#xff0c;粉丝朋友们&#xff1a; 近期有个学员问到了一个输入法相关问题。刚好梳理了一下输入法相关的在多屏模式的一个展示流程&#xff0c;这里做个记录&#xff0c;也相当于深入理解窗口相关的一篇干货blog。 如上面两幅图展示&#xff0c;输入法可以自由自在显…

谁登榜? 2023数据安全平台神兽企业

在数字经济的浪潮中&#xff0c;数据安全已成为企业发展的关键支撑。2023年8月&#xff0c;CSA大中华区启动数据安全平台神兽企业调研&#xff0c;得到了众多网络安全综合厂商、数据安全专业厂商、云服务提供商、用户单位的广泛关注和积极参与。 历时4个月&#xff0c;CSA大中…

Java 线程池到底是如何复用线程的

原理概述 其实 Java 线程池的实现原理很简单&#xff0c;说白了就是一个线程集合 workerSet 和一个阻塞队列 workQueue。 当用户向线程池提交一个任务时&#xff0c;线程池会先将任务放入 workQueue 中。workerSet 中的线程会不断的从 workQueue 中获取线程然后执行。当 work…

多人聊天Java

服务端 import java.io.*; import java.net.*; import java.util.ArrayList; public class Server{ public static ServerSocket server_socket; public static ArrayList<Socket> socketListnew ArrayList<Socket>(); public static void main(String []ar…

性能调优入门

从公众号转载&#xff0c;关注微信公众号掌握更多技术动态 --------------------------------------------------------------- 一、性能定律和数理基础 1.三个定律法则 (1)帕累托法则 我它也被称为 80/20 法则、关键少数法则&#xff0c;或者八二法则。人们在生活中发现很多…

Ubuntur编译ROS报错:error PCL requires C++14 or above

ubuntu20.04 编译ROS包 报错&#xff1a; error&#xff1a; PCL requires C14 or above&#xff1a; 修改Cmakelists.txt文件&#xff1a; set&#xff08;CMAKE_CXX_STANDARD 14&#xff09; 再次编译成功.

用 Bytebase 做数据库 schema 迁移

数据库 schema 迁移指修改管理数据库结构的变更&#xff0c;包括为数据库添加视图或表、更改字段类型或定义新约束。Bytebase 提供了可视化 GUI 方便迁移数据库 schema&#xff0c;本教程将展示如何使用 Bytebase 为 schema 迁移配上 SQL 审核&#xff0c;自定义审批流&#xf…

改造python3中的http.server为简单的文件上传下载服务

改造 修改python3中的http.server.SimpleHTTPRequestHandler&#xff0c;实现简单的文件上传下载服务 simple_http_file_server.py&#xff1a; # !/usr/bin/env python3import datetime import email import html import http.server import io import mimetypes import os …

UDP协议实现群聊

服务端 package ydd;import java.io.*; import java.net.*; import java.util.ArrayList; public class A2{public static ServerSocket server_socket;public static ArrayList<Socket> socketListnew ArrayList<Socket>(); public static void main(String []a…

【C++】如何优雅地把二维数组初始化为0

2023年12月7日&#xff0c;周四上午 目录 为什么要初始化二维数组不优雅的初始化方式&#xff1a;使用两个for循环优雅的初始化方式一&#xff1a;使用初始化列表优雅的初始化方式二&#xff1a;使用memset函数 为什么要初始化二维数组 如果不初始化二维数组&#xff0c;那么…

点评项目——短信登陆模块

2023.12.6 短信登陆如果基于session来实现&#xff0c;会存在session共享问题&#xff1a;多台Tomcat不能共享session存储空间&#xff0c;这会导致当请求切换到不同服务器时出现数据丢失的问题。 早期的解决办法是让session提供一个数据拷贝的功能&#xff0c;即让各个Tomcat的…

【Python】流畅!一个非常好用的网络数据采集工具!

文章目录 前言一、注册二、初窥三 数据集四 自定义网站网络爬虫总结 前言 你是否曾为获取重要数据而感到困扰&#xff1f;是否因为数据封锁而无法获取所需信息&#xff1f;是否因为数据格式混乱而头疼&#xff1f;现在&#xff0c;所有这些问题都可以迎刃而解。让我为大家介绍…

【数据结构】——二叉树简答题模板

目录 一、树和二叉树的概念&#xff08;一&#xff09;二叉树的定义和性质&#xff08;二&#xff09;树和二叉树的区别 二、完全二叉树和满二叉树三、二叉树的遍历&#xff08;一&#xff09;由序列确定二叉树&#xff08;二&#xff09;不同遍历序列的关系 四、二叉树的性质&…

智能井盖传感器产品介绍,井盖传感器推荐

智能井盖传感器是一种先进的设备&#xff0c;能够提高城市管理的智能化水平。该传感器作为城市生命线建设的核心组成部分&#xff0c;为智慧城市的正常建设提供了有力的保障&#xff0c;能够提高城市管理的智能化水平。这种设备通过高度灵敏的传感器网络&#xff0c;实时监测井…

智能优化算法应用:基于野马算法无线传感器网络(WSN)覆盖优化 - 附代码

智能优化算法应用&#xff1a;基于野马算法无线传感器网络(WSN)覆盖优化 - 附代码 文章目录 智能优化算法应用&#xff1a;基于野马算法无线传感器网络(WSN)覆盖优化 - 附代码1.无线传感网络节点模型2.覆盖数学模型及分析3.野马算法4.实验参数设定5.算法结果6.参考文献7.MATLAB…

通过Powershell远程控制windows服务器

1、被测服务器5985、5986端口开启&#xff0c;在网络设置中&#xff0c;点击“更改连接属性”。 2、网络配置文件中选择“专用”。 3、以管理员权限运行Powershell&#xff0c; 4.通过powershell命令在本地电脑上添加远端信任主机 winrm set winrm/config/client {TrustedHos…

关于DWC OTG2.0中PFC的理解

在DWC OTG2.0 Controller手册中&#xff0c;有一章节专门介绍了PFC&#xff0c;Packet FIFO Controller。其内部分为共享FIFO&#xff08;shared FIFO&#xff09;以及专用FIFO&#xff08;Dedicated FIFO&#xff09;&#xff0c;并针对dev和host两种模式&#xff0c;并且还要…

国内AI翘楚,看看有没有你心动的offer?

科技创新争占高地&#xff0c;AI领域各显神通。从一战成名的阿尔法狗到引起轩然大波的ChatGPT&#xff0c;我们早已卷入了一场没有硝烟的革命。前方世人看到的科技日新日异、岁月静好&#xff0c;后方是各大企业的绞尽脑汁、争先恐后。人工智能时代&#xff0c;AI是挡不住的时代…