​

         前面大概看了J1939的请求报文,其实就是请求一个PGN的信息。今天,把手里的例程基本梳理了一下。感觉大概调试了一下,基本上看明白了大概的用法。只是,例程似乎只是用于基础功能的演示,并没有严格遵循相应PGN的定义。

         这里,先大概了解一下发送机转速PGN。

460_J1939请求报文的应答_测试环境

         其实,这个是已经在文档中定义过了的PGN。如果,实际的应用肯定得按照这个来。不过,我现在手里的代码其实并不是百分百遵循这样的定义。

460_J1939请求报文的应答_数据_02

         接收到了请求之后,如果正好是这个PGN,那么其实还有两种处理方式。其中一种处理模式是按键没按下的时候,另一个则是按下的时候。

460_J1939请求报文的应答_测试环境_03

         如果按键被按下(低有效),那么这个节点回复其实是否定响应。不同的响应模式,可以参考下面的说明:

460_J1939请求报文的应答_数据_04

460_J1939请求报文的应答_测试环境

         如果按键没被按下,那么这个节点进行肯定的应答。并且,发送发送机转速。其实,这里仅仅是一个变量,且数据场不是发送机转速的位置。为了方便测试,我改成了一个计数器。

         接下来,看看我的测试环境下的实际测试报文记录:

460_J1939请求报文的应答_数据_06

         这是没有按下按键的时候,节点请求以及肯定响应的报文记录。通过报文记录,也能够看得到计数器的变化。

460_J1939请求报文的应答_数据_07

         这是按下按键之后,节点请求给出的否定响应的报文记录。数据场第一个字节,是否定响应信息。最后三个字节,是相关的PGN。其他的是填充位,或者不支持时候的默认值。从具体的报文记录,还可以看得出来请求报文的回复是回复到请求节点的地址。