基于CAPL的BIN文件解析

news2024/12/23 9:39:06
  • 🍅 我是蚂蚁小兵,专注于车载诊断领域,尤其擅长于对CANoe工具的使用
  • 🍅 寻找组织 ,答疑解惑,摸鱼聊天,博客源码,点击加入👉【相亲相爱一家人】
  • 🍅 玩转CANoe,博客目录大全,点击跳转👉

📘前言

  • 🍅 车载测试必不可少的是刷写,行业内有很多格式的刷写文件,S19,HEX,BIN,还有一些主机厂自定义的比如Volvo/GeeaVBFCheryCBF

  • 🍅 本章节先了解BIN文件

请添加图片描述

目录

  • 📘前言
  • 📙 BIN文件的格式简介
  • 📙CAPL解析BIN文件源码
  • 🌎总结

请添加图片描述


📙 BIN文件的格式简介

  • 是以bin为后缀的文件,是一种二进制文件。不同于 HEX,S19文件, BIN文件用文本软件打开就是乱码的。如下
    在这里插入图片描述

  • 用Hex-view软件可以打开。
    在这里插入图片描述

📙CAPL解析BIN文件源码


  • BIN文件解析比HEX和S19文件解析简单的多,打开文件后,用 fileGetBinaryBlock 以二进制方式一下子就把所有数据都读出来了。
  • 这里为了和HEX,S19解析统一,我们用了统一的变量来保存数据,这样我们的代码就是具有兼容性的。
/*@!Encoding:936*/

variables
{ 
  dword fileHandle;
  const dword  text_module = 0;
  const dword  binary_module = 1;
  enum File_Type { file_header, file_data,file_tail };
   
  struct  FlsData_Segment 
  {
  byte  seg_index;
  dword start_address;
  dword data_size;
  dword data_offset;     
  } F_SegmentInfor[10];//暂时定数组为10

  long   SegCounter;       //记录文件被分成多少个段
  long   AllDataBytes;     // 文件所有的数据字节数
  byte  FlsData_BufferArr[0x1FFFFFF]; //文件中的所有字节被解析后放在该数组  
}
 

on key 'a'
{
 
 Flash_Parse_BIN("E:\\ApplicationData.bin");

}

long Flash_Parse_BIN(char f_path[])
{  
  long fileHandle;
	dword   i;
  
  fileHandle = OpenFileRead(f_path,binary_module);
  
  if (fileHandle == 0 ) 
  {
    write("Failed to open File %s !",f_path);
    return 0 ;
  }

  write("File:%s Opened",f_path);
  
  SegCounter = 1; 
  F_SegmentInfor[0].start_address = 0;		
  F_SegmentInfor[0].data_offset   = 0;		
  F_SegmentInfor[0].data_size = fileGetBinaryBlock (FlsData_BufferArr,elcount(FlsData_BufferArr),fileHandle);


  for(i = 0; i < SegCounter; i++)
  {
  	write(" 起始地址:0x%X, 结束地址:0x%X, 数据长度:%6X字节\r\n", F_SegmentInfor[i].start_address, F_SegmentInfor[i].start_address + F_SegmentInfor[i].data_size - 1, F_SegmentInfor[i].data_size);
  }

  fileClose(fileHandle);

   return 1 ;
}

  • CAPL脚本跑出来的结果和HexView对比,结果一致,说明我们解析没问题

在这里插入图片描述

在这里插入图片描述

🌎总结

23

7

  • 🚩要有最朴素的生活,最遥远的梦想,即使明天天寒地冻,路遥马亡!

  • 🚩如果这篇博客对你有帮助,请 “点赞” “评论”“收藏”一键三连 哦!码字不易,大家的支持就是我坚持下去的动力。
    18

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

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

相关文章

管理 Python 项目的艺术:在 PyCharm 中使用虚拟环境(以BPnP为例)

在 PyCharm 中使用虚拟环境对于 Python 项目开发具有多方面的重要作用&#xff0c;这些作用体现在提升项目管理的效率、保障代码的可运行性以及维护项目的长期稳定性等方面。以下是使用虚拟环境的几个关键好处&#xff1a; 1. 依赖管理和隔离 虚拟环境允许每个项目拥有…

Adobe Photoshop CC 2017无法打开解决方案

Adobe Photoshop CC 2017双击无反应&#xff0c;右键以管理员身份运行也没有反应 解决方案&#xff1a; 事件查看器中查看应用程序的事件 如果找到程序报错事件&#xff0c;网上下载ZXPSignLib-minimal.dll文件替换错误模块路径位置的该文件即可 ZXPSignLib-minimal.dll下载地…

20240423-bitlocker加密怎么解除

20240423-bitlocker加密怎么解除 2024/4/23 15:42 百度&#xff1a;bitlocker加密怎么解除 https://baijiahao.baidu.com/s?id1779469107112180136&wfrspider&forpc Bitlocker加密怎么解除 解除BitLocker加密的步骤如下&#xff1a; 打开“控制面板”&#xff1a;在…

重学java 20.面向对象 继承 下

对未来真正的慷慨&#xff0c;是把一切献给现在 —— 24.4.22 super和this 学习目标&#xff1a; 01.继承中构造方法的特点 02.super和this的具体使用 03.继承的特点 04.练习&#xff1a;为父类中private属性赋值 一、继承中构造方法的特点 1.注意&#xff1a; 在new子类对象时…

项目开发过程中的错误记录

一、VUE版本一致但是运行不起来。 管理员运行命令提示符 切换到可以看到package.json的目录下面 npm install --registryhttps://registry.npmmirror.com npm install npm run dev 二、git pull拉取不下来远程项目 三、ssm项目运行时&#xff0c;tomcat输出日志乱码 解决&am…

红黑树封装map和set(模拟实现)

troop主页 临近五一放假&#xff0c;祝大家节日快乐&#xff0c;我们的学习还在路上&#xff01;&#xff01; 在前面一章我们已经实现出了红黑树的基本框架&#xff0c;现在我们要有这个底层结构去封装map和set。 一 红黑树的迭代器 但在这之前我们要先把红黑树的迭代器实现出…

SRS WebRTC Whip 和 Whep 部署体验问题

whip 報錯 404 webrtc推流 小窗口一闪而过&#xff0c;然后查看f12回复404的报错信息 chrome版本&#xff1a; 正在检查更新 版本 123.0.6312.123&#xff08;正式版本&#xff09; &#xff08;64 位&#xff09; centos 7.9 源码安装部署&#xff0c; 代码分支5.0 完全按…

linux /openEuler/annocanda/SecretNote

国产操作系统欧拉&#xff08;EulerOS&#xff09;是华为公司自主研发并推广的开源操作系统。它基于Linux内核&#xff0c;旨在为各种设备提供统一的操作系统平台&#xff0c;从而为用户提供更加流畅、安全、可靠和智能的使用体验。 linux 中安装annocanda : Anaconda3-2024.0…

逆向修改app就可以游戏充值到账?

hello ,大家好, 现在市场仍然流行着非常多的传奇类游戏私服或者其他类型的游戏私服,随着私服越来越多(很多并不合法),越来越多的人加入了破解,逆向修改,或者代充的队伍并从中获利。这里我给大家分享一下这些做代充的常规的做法,以及大家作为游戏服务器如何避坑做强校验…

《LINUX运维从入门到精通 》:运维入门者的自学用书

作者简介&#xff1a;一名云计算网络运维人员、每天分享网络与运维的技术与干货。 公众号&#xff1a;网络豆云计算学堂 座右铭&#xff1a;低头赶路&#xff0c;敬事如仪 个人主页&#xff1a; 网络豆的主页​​​​​ 写在前面 《Linux运维从入门到精通》从初学者角度…

NCF29A1 高端阻抗匹配

一、前言 Class E 高端 L-Front 匹配集成了额外的滤波器&#xff0c;提供了足够的谐波衰减&#xff0c;使 NCF29A1 与天线在比基频更高的频率下具有相当大的增益。向 PA 提供的阻抗和输出电容与表 1 ZPAOUT 所示相同。 二、原理图 图 1 高端 L-Front 匹配原理图 1&#xff…

【数据结构】AVL树(万字超详细 附动图)

一、前言 二、AVL树的性质 三、AVL树节点的定义 四、AVL树的插入 五、AVL树的平衡调整 六、AVL树的验证 6.1 验证有序 6.2 验证平衡 七、AVL树的删除 八、AVL树的性能和代码 一、前言 还没有学习过二叉搜索树的同学可以移步 【数据结构】二叉搜索树-CSDN博客https:/…

Acrobat Pro DC 2021:强大的PDF编辑软件

Acrobat Pro DC 2021是Adobe公司推出的一款全面而强大的PDF编辑软件&#xff0c;凭借其卓越的性能和丰富的功能&#xff0c;成为了PDF编辑领域的领军者。 Acrobat Pro DC 2021中文激活版下载 这款软件具备全面的PDF编辑功能&#xff0c;包括文本编辑、图片处理、页面组织等&…

Vue3引入高德地图js API 2.0

文章目录 前言一、地图加载1.本文准备环境2.引入库3.加载地图4.加载地图控件 二、POI搜索1.什么是poi搜索2.如何使用 三、绘制点标记与信息窗体1.场景描述2.案例3.信息窗体-链接路由跳转4.进阶-通过Marker自动触发标记点&#xff08;非鼠标手动点击&#xff09; 四、jsApi地图事…

指挥中心实战指挥平台-通信指挥类装备多链路聚合设备解决方案实例

一、建设目标及要求 坚持“一切为了实战、一切围绕实战、一切服务实战”的总要求&#xff0c;紧紧围绕大数据应用和自动化、智能化、智慧化这一主题主线&#xff0c;建设升级改造支队指挥中心&#xff0c;集成语音、视频、即时消息、短信、对讲、会议等多媒体通信能力&#xf…

AJAX——图片上传

图片上传流程 1.获取图片文件对象 2.使用FormData携带图片文件 3.提交表单数据到服务器&#xff0c;使用图片url网址 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><meta http-equiv"X-UA-Compatible"…

埋点,自己写插件,自己写的按钮埋点,掘金同款投递简历

20分钟掌握 Vite 插件开发 - 掘金 vite的生命周期啥的 1.浏览器的控制台输出有样式的字 // const randomLetterPlugin ()>{ // const letters [wwwwwww,000000000000,888888888888]; // //随机获取一个字符并打印 // const printRandomLetter ()>{ // …

LCD彩屏显示方案选型攻略:从接口到GUI开发工具的全面评估

在现代人类社会&#xff0c;彩色显示技术是科技王国里最为绚丽夺目的技术奇葩&#xff0c;LCD彩屏通过显示实时信息并提供交互式的体验&#xff0c;将信息时代打扮得多姿多彩。无论是智能家电还是医疗健康设备领域&#xff0c;精美直观的LCD彩屏显示&#xff0c;往往能够为用户…

学习JFinal

1.五个配置类 configConstants&#xff08;配置&#xff09;&#xff1a; configRoute&#xff08;路由&#xff09;&#xff1a; 2.Controller层&#xff08;控制器&#xff09; 访问流程&#xff1a; Action&#xff1a; getPara&#xff1a; 参数说明&#xff1a;第一个参…

monkey测试详解

一、monkey测试的定义 Monkey 测试是通过向系统发送伪随机的用户事件流(如按键输入、触摸屏输入、手势输入等),实现对应用程序客户端的稳定性测试;通俗来说,Monkey 测试即“猴子测试”,是指像猴子一样,不知道程序的任何用户交互方面的知识,就对界面进行无目的、乱点乱按…