全部学习笔记汇总: https://github.com/GreyZhang/J1939_basic

前面了解了一下广播多帧报文的实现分析,当时发送了一个0xFED8(65240)PGN的信息。但是,这种数据的组包顺序以及规则没有弄清楚。

我没有系统阅读过全部的J1939的资料,因此直接借助了网络资源。找到了一份文件,对此的解释如下:

这一组报文的发送必须是通过BAM来实现,因此这是之前我们看到的功能的实现原因。之前的报文发送,采用的正好就是BAM多帧报文。相关的代码如下:

而报文发送的解释,在我找到的文档如下:

这部分正好是对上面代码的解释。

这部分是多帧报文的数据包,一共是2包数据。其中,第一帧报文发送了被控CA的NAME的前7个字节。第二帧报文发送了CA的NAME的第8个字节。这样,两帧报文发送了8个字节的NAME。而接下来,第二帧报文还有一个字节的信息,是修改的地址。

这样,我之前看过的代码再看一下。

第一段代码,先组装了PGN的信息,BAM发送的目标地址是全局地址。每个消息的第一个字节的信息是数据包的编号,其他的则按照上面的内容进行组装。无效的数据场填充成了0xFF。

修改后的新地址是132,也就是十六进制的0x84。

相关的功能运行,测试一下。

首先,各自的地址声明报文。数据场中,是CA的NAME。

接下来的处理,前面5次请求都是从0x81发送给0x84的。因此,0x80的节点没有任何响应。接下来的按键,触发了命令地址功能。其中,第一条报文就是通过EC00的PGN BAM来通知接下来进行多针报文发送。数据场中,第一个字节的0x20正好是十进制的32,是一个固定值。接下来,09代表9个字节的数据。2则是代表两个报文发完全部的数据。接下来的FF是预留的数据位。00FED8,则是接下来需要利用DT发送数据的PGN。再往下,是两个数据包。其中,33以及一串0与前面的0x80节点的NAME一致。而后面的84,则是新的地址。

其实,上面截图里面的广播一行是多出来的一行解析显示,并不是多了一份报文。对比最原始的log还是可以看的出来的。

最后一条报文的功能则是原来的0x80的CA在接收到命令之后,重新进行了地址声明。后续继续测试,两个按键则可以正常通信了。

在网络资料中看到,一般情况下,这个功能之后,修改软件之后的CA应该修改自己的地址并且存储EEPROM。

453_J1939命令地址PGN 65240(FED8)的使用相关推荐

  1. linux命令地址,[命令] Linux IP 命令 IP(管理地址)

    内容目录: 内容一:通过 ip 命令查看网卡信息 1.1 通过 ip 命令查看所有网卡的信息 1.2 通过 ip 命令查看某一张网卡的信息 1.2.1 通过 ip 命令查看某一张网卡的信息的格式 1. ...

  2. Redis各个命令官网地址

    在学习Redis的时候,熟悉redis的各种操作命令是非常重要的,因为Redis各种操作都是需要各种命令的参与才能得到正确的结果,下面给出Redis官网命令地址 官网命令地址:https://redi ...

  3. OD命令大全(OllyDbg命令)

    以下命令适用于 OllyDbg 的快捷命令栏插件(显示于程序的状态栏上方) CALC 判断表达式 WATCH 添加监视表达式 AT / FOLLOW Disassemble at address 在地 ...

  4. 网卡清空缓存命令_九个常用的网络命令 ,很实用!

    内容来源:云极安 一.ping命令 ‍‍‍‍‍‍‍ ping是个使用频率极高的实用程序,主要用于确定网络的连通性.这对确定网络是否正确连接,以及网络连接的状况十分有用.简单的说,ping就是一个测试程 ...

  5. Linux基础常用命令

    ps -ef用于查看全格式的全部进程,其中"ps"是在Linux中是查看进程的命令,"-e "参数代表显示所有进程,"-f"参数代表全格式. ...

  6. Linux(Ubuntu)常用命令(二)

    归档管理: 打包: tar -cvf xxx.tar 打包对象 (一般来说就是 -cvf 一起用)但这种不压缩的打包通常不用,接下来会说. -options:-c    生成档案文件,创建打包文件. ...

  7. linux 网络通讯 命令,Linux—网络通讯管理命令

    一.ping命令 1. ping主机名2. ping域名 [root@localhost~]# pingwww.baidu.com3. pingIP地址 [root@localhost~]# ping ...

  8. 虚拟机中dns配置好了但是域名ping不同_弱电工程中常用的几个网络命令,学会后轻松变高手...

    现在的弱电工程可以成为网络工程了,基本上全是数字化.网络化了,所以我们需要掌握一定的网络知识,今天就分享一些常用的网络命令,设备调试.维护的时候用的到 正文: ping命令 ping是个使用频率极高的 ...

  9. linux的sed命令是什么,linux sed命令

    linux sed命令 简介: sed是一种流编辑器,它一次处理一行内容.处理时,把当前处理的行存储在临时缓冲区中,称为"模式空间"(pattern space),接着用sed命令 ...

最新文章

  1. 通过分离dataSource 让我们的code具有更高的复用性.
  2. jsp是在html中添加什么作用域,JSP九个内置对象 四大作用域 动作指令
  3. bootstrap4 左侧导航栏 优秀 大气_志愿服务嘉年华|“持志隽永 赴愿奔行优秀志愿服务项目展示第六期...
  4. chrome 获取剪贴板内容_Chrome 开发者工具的11 个高级使用技巧
  5. Map和hashmap
  6. 通才和专家:如何选择
  7. employee.java,Java基础系列(六):对象与类(上)
  8. js计算浮点数出现小数;解决js计算小数问题;js数组相加出现小数;
  9. 【图像加密】基于matlab GUI+Logistic+Tent+Kent+Henon图像加密与解密【含Matlab源码 1745期】
  10. oracle 字段对错,oracle 两表之间字段赋值错误解析
  11. 微型计算机原理及应用是啥,微型计算机原理及应用技术(第3版)
  12. java对象复制_Java对象的复制三种方式
  13. html tbody id 赋值,IE6/IE7/IE8/IE9中tbody的innerHTML不能赋值的完美解决方案
  14. LaTex(PART IV) 各级标题
  15. 2光16电全千兆二层管理型宽温工业级环网交换机 光纤自愈环网工业级以太网交换机
  16. 轻松制作美容美发线下门店电子优惠券的实用方法分享
  17. DSPE-PEG-TAT,TAT-PEG-DSPE,磷脂-聚乙二醇-靶向穿膜肽TAT供应
  18. LUA中判断GameObject是否被Destory
  19. 如何建设自己的网站 博客
  20. Python应用实战案例:Python编程环境配置(Anaconda、Jupyter、GPU环境)

热门文章

  1. 嵌入式软件开发,快五年,没有成就感,快迷失自己了
  2. 每一个成功男人的背后,一定有另一个支持他的男人
  3. 安装vue脚手架出现GET httpsregistry.npmmirror.comvue-cli-g response 404 status
  4. 2021-11-13vjudge第四题D - a/b + c/d
  5. 终于搞懂了!字符串拼接的各种姿势以及底层的小知识
  6. e的-jwt次方的模
  7. 网站实现微博登录自动关注微博的权限,scope权限!
  8. 艾永亮:特仑苏有机奶的进阶之路,不断助力实现成为更好的自己
  9. PAT A1006 Sign In and Sign Out
  10. Learning to detect open classes for universal domain adaption