459_J1939请求报文格式分析与代码印证

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

         这次来小结一下请求报文的发送,因为响应部分暂时有一点点模糊没看明白,还需要补充一点文档信息。

         关于请求报文,我参考了恒润的一份PPT中的一页,这个在很多文库能够看得到。具体部分据图如下:

         从这份PPT中的信息看,其实请求报文还是很简单的一个东西。至少,请求的动作还是很简单的。这是一个固定的报文格式,填充一个PGN的信息即可。而请求发送的目标地址可以是全局地址,也可以是指定的地址。

         接下来,结合我找到的一份代码看一下代码的处理。

         其实,跟上面的表格吻合度还是很高的。

         首先,PF是234,PGN也就是59904。优先级经过查看,也是3。数据长度是3,请求的PGN是发送机转速的一个PGN。这里没有源地址信息,其实是不需要。因为报文的发送功能中会自动的组装添加这样的信息。

         上面是组装信息,源地址在这里被自动组装到了报文当中。而这个就是请求报文的发送过程,至于响应我还没有把例程调试通过也没有做分析,还是有一点存疑。其实,我自己存疑的地方有两个:第一个是响应报文是不是回复到源地址?或者是全局地址?第二个疑问是,请求的PGN有没有可能不仅是一帧报文,存在多帧的情况?按照现在比较直觉的想法,可能是发送给特定地址,也就是请求报文的源地址,否则的话网络传输代价太高,毕竟消耗了更多节点的处理工作。而多帧报文,或许是没有的吧?

         现在对J1939的了解的确是还很肤浅,但是随着我不断的丰富细节,我相信这个骨架肯定会逐渐被我描绘清楚的。

         初步调试的一个例程,发送出来的报文请求如下:

         这里是两次请求发出来的信息,从报文信息看是0x81请求0x80发送0x00F004的PGN信息。

         之前,J1939其实我也花过不少时间。但是都是突击性为别人修修补补,希望这次的学习能够有一个系统性的掌握吧!

已标记关键词 清除标记
相关推荐
©️2020 CSDN 皮肤主题: 编程工作室 设计师:CSDN官方博客 返回首页