LIN总线CAPL函数——校验和段(Checksum)测试(linGetChecksum)

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

请添加图片描述

目录

    • 校验和段(Checksum Feild)
    • linGetChecksum函数
    • 验证LIN报文校验和正确

校验和段(Checksum Feild)

在这里插入图片描述

  • 校验和段是一个字节,对帧中所传输的内容进行校验

在这里插入图片描述

  • 校验和分为标准型校验和(Classic Checksum)及增强型校验和(Enhanced Checksum),如表3.2 所示。
  • 校验方法为将校验对象的各字节作带进位二进制加法(每当结果大于等于256 时就减去255),并将所得最
    终的和逐位取反,以该结果作为要发送的校验和。

在这里插入图片描述

linGetChecksum函数

在这里插入图片描述

测试示例代码如下:

on linFrame *
{write("this.id = 0x%x , linGetChecksum = 0x%x",this.id,linGetChecksum(this));
}
  • 测试结果

在这里插入图片描述

在这里插入图片描述

验证LIN报文校验和正确

  • 如下面代码,Calculate_Checksum函数计算校验和,然后和CAPL内置函数linGetChecksum读取的校验和比较
on linFrame *
{byte cal_CheckSum,j;byte get_CheckSum;byte data[8];for(j=0;j<this.dlc;j++){data[j]  =this.byte(j);}cal_CheckSum = Calculate_Checksum(this.id,data,this.dlc);get_CheckSum = linGetChecksum(this);if(cal_CheckSum != get_CheckSum){write("error : id = 0x% ,计算的校验和 = 0x%x , 读取的校验和 = 0x%x",this.id,cal_CheckSum,get_CheckSum);}//write("id = 0x%x ,计算的校验和 = 0x%x , 读取的校验和 = 0x%x",this.id,cal_CheckSum,get_CheckSum);
}byte Calculate_Checksum(byte id,byte data[],byte len)
{word sum;byte  i;sum = 0;// 通信报文是增强型校验和,包含数据段和PID段//诊断报文是标准型校验和 ,只包含数据段if (id!=0x3C && id!=0x3D)                                                          {sum=linGetProtectedID(id);}for(i = 0; i < len; i++){sum +=data[i];if(sum&0xff00){sum&=0x00ff;sum+=1;}  } sum=~sum; return (byte)sum;
}

测试结果:

Program / Model	id = 0x11 ,计算的校验和 = 0xee , 读取的校验和 = 0xee
Program / Model	id = 0x12 ,计算的校验和 = 0x6d , 读取的校验和 = 0x6d
Program / Model	id = 0x20 ,计算的校验和 = 0x2e , 读取的校验和 = 0x2e
Program / Model	id = 0x21 ,计算的校验和 = 0xec , 读取的校验和 = 0xec
Program / Model	id = 0x24 ,计算的校验和 = 0xe9 , 读取的校验和 = 0xe9
Program / Model	id = 0x25 ,计算的校验和 = 0x29 , 读取的校验和 = 0x29
Program / Model	id = 0x22 ,计算的校验和 = 0xef , 读取的校验和 = 0xef
Program / Model	id = 0x23 ,计算的校验和 = 0x92 , 读取的校验和 = 0x92
Program / Model	id = 0x30 ,计算的校验和 = 0xf , 读取的校验和 = 0xf
Program / Model	id = 0x10 ,计算的校验和 = 0x1b , 读取的校验和 = 0x1b
Program / Model	id = 0x11 ,计算的校验和 = 0xee , 读取的校验和 = 0xee
Program / Model	id = 0x12 ,计算的校验和 = 0x6d , 读取的校验和 = 0x6d
Program / Model	id = 0x20 ,计算的校验和 = 0x2e , 读取的校验和 = 0x2e
Program / Model	id = 0x21 ,计算的校验和 = 0xec , 读取的校验和 = 0xec
Program / Model	id = 0x24 ,计算的校验和 = 0xe9 , 读取的校验和 = 0xe9
Program / Model	id = 0x25 ,计算的校验和 = 0x29 , 读取的校验和 = 0x29
Program / Model	id = 0x22 ,计算的校验和 = 0xef , 读取的校验和 = 0xef
Program / Model	id = 0x23 ,计算的校验和 = 0x92 , 读取的校验和 = 0x92
Program / Model	id = 0x30 ,计算的校验和 = 0xf , 读取的校验和 = 0xf
Program / Model	id = 0x10 ,计算的校验和 = 0x1b , 读取的校验和 = 0x1b

在这里插入图片描述

23

7

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

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

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

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

相关文章

57.【C语言】字符函数和字符串函数(strerror函数)

11.strerror函数 *简单使用 strerror string error cpuscplus的介绍 点我跳转 翻译: 函数 strerror char * strerror ( int errnum ); 得到指向错误信息字符串(简称错误码)的指针 解释errnum的值,产生一条描述错误情况的信息的字符串,就像被库函数设置为errno一样 这个返回的…

【新手上路】衡石分析平台使用手册-系统管理员手册

用户管理​ 用户管理页面可以创建管理用户、对用户进行分组管理、组织架构管理及用户属性的维护和管理。下面详细介绍用户管理相关功能。 用户管理​ 用户管理子页面展示了当前系统中所有用户的信息&#xff0c;可以添加新用户&#xff0c;查看、编辑已有用户&#xff0c;可…

解锁社交业务增长与合规“秘笈”,泛娱乐行业沙龙杭州站亮点一览!

在全球数字化浪潮的推动下&#xff0c;泛娱乐行业正迎来广阔的发展空间&#xff0c;与此同时&#xff0c;社交产品监管日益规范&#xff0c;海外市场机遇与挑战并存&#xff0c;游戏行业增速放缓等情况也不容忽视。如何在合规前提下&#xff0c;探求新的增长点成为从业者共同关…

CAN_FD和CAN2.0的不同点——深入浅出理解CAN协议(二)

本系列是在同公司硬件设计和验证同事&#xff0c;1、在完成了CANFD硬件接口IP开发 2、熟悉ISO-11898系列、ISO16845、CAN2.0协议、CANFD协议等以及大量学习资料 3、深入研究其他家CANFD IP&#xff08;NXP、BOSCH&#xff09;4、独立开发了对应底层驱动 5、通过CANoe和周立功CA…

Java Web服务运行一段时间后出现cpu升高导致的性能下降问题排查

背景 有个web服务&#xff0c;运行一段时间后&#xff0c;出现cpu逐渐占用高&#xff0c;服务处理请求整体性能下降问题。 异常情况时&#xff0c; 同时jvm的cpu上涨 最终表现为&#xff0c;处理内部逻辑执行耗时变高。 排查原因 原来服务的jvm启动参数带了 -XX:-TieredCom…

rocky9虚拟机配置双网卡的详细过程

编辑虚拟机配置->添加->选择网络适配器->确认->打开虚拟机 1.ip add查看第二个网卡的名称&#xff0c;我这里是ens36 2.cd到网卡的配置文件目录 cd /etc/NetworkManager/system-connections/ ls3.复制一份网卡的配置文件并改名为ens36.nmconnection(根据自己的第…

5V全桥驱动芯片单通道可替代型号LG9110S,应用于牙刷,电子锁,共享单车锁等产品中具有过温保护功能

芯片描述&#xff1a; GC9110 是一款低压 5V 全桥驱动芯片&#xff0c;为摄像机、消费类产品、玩具和其他低压或者电池供电的运动控制类应用提供了集成的电机驱动解决方案。GC9110 能提供高达 1.3A 的持续输出电流。可以工作在 2~6V 的电源电压上。GC9110 具有 PWM&#xff08;…

香橙派zero2w上手——环境配置添加OLED小屏幕

0 硬件参数 origin pi zero2W 硬件参数 CPU全志 H618 四核 64 位 1.5GHz Cortex-A53 处理器GPUMali G31 MP2&#xff0c;支持OpenGL ES 1.0/2.0/3.2&#xff0c;OpenCL 2.0&#xff0c;Vulkan 1.1内存LPDDR4:1GB/1.5GB/2GB/4GB (可选)存储SPI Flash: 16MBWiFi蓝牙WiFi蓝牙二合…

mysql时间戳格式化yyyy-mm-dd

格式化到 年月日 # 将时间换成列名就行&#xff1b;当前是秒级时间戳&#xff0c;如果是毫秒的 / 1000即可 # SELECT FROM_UNIXTIME(1602668106666.777888999 / 1000,%Y-%m-%d) AS a; # SELECT FROM_UNIXTIME(列名 / 1000,%Y-%m-%d) AS a; SELECT FROM_UNIXTIME(1602668106.666…

办公生产力工具 职场打工人早下班宝藏神器推荐

当你外出时&#xff0c;电脑不在身边&#xff0c;但需要处理文件怎么办&#xff1f;这时&#xff0c;你需要一个提高办公生产力工具。网易GameViewer远程控制软件可以帮助你轻松实现这一目标&#xff0c;简直是职场打工人早下班宝藏神器。 GameViewer远程可以一键直连无需复杂配…

光控资本:美股,又新高!比特币也大涨!静待“关键时刻”

隔夜道指、标普500指数盘中再创新高后&#xff0c;日股开盘也体现强势。 当地时刻9月17日&#xff0c;美股三大指数收盘涨跌纷歧&#xff0c;标普500指数和道指盘中创新高后底子收平。中概股体现亮眼&#xff0c;纳斯达克我国金龙指数收涨1.83%&#xff0c;盘中一度涨超2.7%。…

Doris docker 安装

Doris docker 安装 安装地址 1. 操作系统配置初始化 1.1. 配置 vm.max_map_count sudo vim /etc/sysctl.conf追加以下配置&#xff1a; vm.max_map_count20000001.2. 关闭swap vim /etc/fstab注释配置如下&#xff1a; # /dev/mapper/centos-swap swap …

分布式锁总结1 - 为什么需要分布式锁?

目录 1. 最基本的业务逻辑是&#xff1a; 2. 高并发场景下常见的缓存问题 2.1问题一 缓存穿透 : 一直查询不存在的数据 解决方案 : 短暂缓存null结果 2.2 问题二 缓存雪崩 : 大量key同时过期大量请求直击数据库 解决方案 : 在原有的过期时间上加一个随机的值&#xff0c;…

Vue 自定义指令实战

引言 Vue自定义指令是Vue.js框架中强大而灵活的功能之一&#xff0c;它允许开发者根据具体需求创建自定义的指令&#xff0c;以实现更加精细化的交互和数据绑定效果。本文将带你深入探索Vue自定义指令的使用方法、原理和实战&#xff0c;为你打开前端开发的新视野。 我们前面…

推荐10款知名的供应链管理系统,为企业选型提供参考!

本文将盘点十款供应链管理系统&#xff0c;为企业选型提供参考&#xff01; 想象一下&#xff0c;一家企业在生产和销售产品的过程中&#xff0c;原材料供应不及时、库存积压严重、物流配送混乱。这时&#xff0c;供应链管理系统就如同一位高效的指挥家&#xff0c;将各个环节紧…

汽车EDI:MöllerTech EDI项目案例

MllerTech &#xff08;以下简称 Mller&#xff09;是一家德国的家族企业&#xff0c;成立于1730年&#xff0c;主要从事塑料和橡胶领域的生产和加工。公司以其在汽车工业、电子设备和机械制造等行业的解决方案而闻名&#xff0c;尤其是在汽车部件、密封件和工业用途的高性能塑…

进程的知识

进程知识 1.进程和程序的区别: 程序是静态的&#xff0c;它是保存在磁盘上的指令的有序集合&#xff0c;没有任何执行的概念进程是一个动态的概念&#xff0c;它是程序执行的过程&#xff0c;包括了动态创建、调度和销毁的整个过程 2.进程的执行方式&#xff1a; 并行执行 :…

彻底解决找不到msvcr100dll,无法继续执行代码的5个方法

MSVCR100.dll文件的丢失可能会引发一系列系统运行和应用程序功能上的问题。作为Microsoft Visual C运行库中的一个关键动态链接库文件&#xff0c;它的缺失会导致依赖于此文件的软件无法正常启动或执行预期功能。具体表现可能包括但不限于&#xff1a;应用程序崩溃、闪退&#…

SAP B1 营销单据 - 单据字段介绍(下)

背景 营销单据&#xff0c;SAP B1 中一群神秘的单据&#xff0c;在官方说明文档中并未指明【营销单据】范围&#xff0c;却经常使用这一说法。它们结构相似&#xff0c;在 用户定义字段(UDF) 功能里统一受【营销单据】部分增加字段的影响&#xff0c;可以相互复制&#xff08;…

企语iFair-协同管理系统-任意文件读取

文章目录 免责申明漏洞描述搜索语法漏洞复现yaml修复建议 免责申明 本文章仅供学习与交流&#xff0c;请勿用于非法用途&#xff0c;均由使用者本人负责&#xff0c;文章作者不为此承担任何责任 漏洞描述 企语iFair协同管理系统getuploadimage.jsp接口处存在任意文件读取漏洞…