450_J1939地址声明函数的调用处理分析

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

         J1939地址声明的接口功能之前基本上分析过了,这一次看看在整个我看到的例程中这个接口究竟是如何使用的。毕竟,这个接口还是有两种不同的使用模式的。

         这个接口在整个工程里面被调用的次数不是很多,我搜索了全部的工程如下:

450_J1939地址声明函数的调用处理分析

         最前面两个还有最后两个是没有必要关注的,这都是生成的文件或者辅助的工程文件。H文件中的就是一个声明,也不需要看。接下来,其实还剩下一个文件需要分析。从上面的结果看,其实真正的函数调用只有3个地方,剩下的全都是定义或者注释说明中的信息。

450_J1939地址声明函数的调用处理分析

         第一个地方之前其实我已经遇到了,就是J1939的初始化接口中。从参数看,看个接口的实际功能是去声明自己的地址。如果地址没有冲突应该会声明成功,否则会进入仲裁。

450_J1939地址声明函数的调用处理分析

         这是第2个地方,其实是收到了地址声明的报文之后。这里判断的方式判断的PF,组成的PGN为0x00EE00。从这里,判断是否进入仲裁,主要是通过判断接收到消息的原地址是否与当前CA的地址相等来实现。

450_J1939地址声明函数的调用处理分析

         这是最后一个调用的位置,而这个应该是在支持接收命令地址的时候支持的。我大概看了一下代码的含义,大意可能是先通过命令给一个地址,然后CA进行地址声明。具体的处理方式,后续还是要找到相关的文档做一下解读的支持才好。就目前我看到的这个例程来说的话,其实用到的只有前面的两部分。