0

我有使用 candump 和 cansend 的 rtr 帧问题。

转储广播数据是没有问题的。

Architecture - 带有 pican shield 从 J1939 模拟器读取数据的 Raspberry pi.

我运行 candump 来接收总线上的所有消息。然后,当我为 pgnfeec 执行 cansend 时,从模拟器中返回一个 ack 帧。我要求一个预编程的 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 是标准的确认消息。

我在 candump 运行时发送的消息:

cansend can0 00feec00#r

基本上,我没有拿回 VIN 的 PGN。有任何想法吗?

4

1 回答 1

3

事实证明这里有几个问题。

1- J1939 不支持#r

2-您不会通过直接请求该 pgn 来请求 pgns。该方法是将数据发送到处理请求的特定 pgn。下面的例子:

EA 00 是要向其发送数据的 PGN。数据消息中包含我们想要请求的 pgn (LSB),因此 PGN FEE5 现在是 E5FE。需要三个字节,这就是为什么 00 在下面的消息中。

这是发动机小时的工作要求:

cansend 18EA00FF#E5FE00

和回应:

21 00 00 00 8F 01 00 00
于 2016-09-26T19:21:13.743 回答