我有和问题的rtr帧使用坎通普和cansend。
转储广播的数据是没有问题的。
架构- Raspberry pi,带有一个微微核桃屏,从J1939模拟器读取数据。
我运行candump来接收公交车上的所有消息。然后,当我为pgn feec执行一个cansend时,从模拟器得到一个确认帧。我在申请一个预先设定好的VIN,但是我什么也得不到。这是我从candump看到的:
can0 18FEF500 [8] 7D FF FF 40 25 4B FF FF '}..@%K..'
can0 18FEE900 [8] D1 4B 03 00 D1 4B 03 00 '.K...K..'
can0 18FEF700 [8] FF FF FF FF E0 01 FF FF '........'
can0 18FECA00 [8] 03 FF 00 00 00 00 00 00 '........'
can0 00FEEC00 [0] remote request
can0 18E80000 [8] 01 FF FF FF FF EC FE 00 '........'
can0 0CF00300 [8] FF 7D 7D FF FF FF FF FF '.}}.....'
can0 18FE6C00 [8] FF FF FF FF FF FF 80 7D '.......}'
can0 0CF00400 [8] FF FF 7D 80 7D FF FF FF '..}.}...''E800 PGN是标准ack消息。
以及我在运行candump时发送的消息:
cansend can0 00feec00#r基本上我不会拿回VIN的PGN的。有什么想法吗?
发布于 2016-09-27 03:21:14
事实证明这里有几个问题。
J1939不支持1- #r
2-您不能通过直接请求pgn来请求pgn。该方法是将数据发送到处理请求的特定pgn。示例如下:
EA 00是要向其发送数据的PGN。数据消息中包含我们想要请求的pgn (LSB),因此PGN FEE5现在是E5FE。需要三个字节,这就是为什么00出现在下面的消息中。
以下是引擎小时数的工作请求:
cansend 18EA00FF#E5FE00回应是:
21 00 00 00 8F 01 00 00https://stackoverflow.com/questions/39650737
复制相似问题