7

我正在尝试使用 canplayer 重播一些 candump 文件,但没有成功。当我尝试运行 canplayer 时,它只是执行并返回,让我不知道发生了什么。

到目前为止,我已经尝试过:

设置 1

  • 设置vcan接口
  • 使用 cansend 和 cangen 向 vcan 接口发送数据,成功(通过 candump 验证)。
  • 运行 cangen 时从 vcan0 记录了一个 candump 文件。带有绝对时间戳 (-ta) 和不带绝对时间戳的记录文件。
  • 尝试使用 canplayer 重现文件。尝试使用几个参数,无济于事。canplayer 立即返回,没有任何投诉。如果我弄乱了它抱怨的文件或参数。

设置 2

  • 将 2 个 PEAK CAN USB 适配器设备连接到 PC。
  • 使用 120 欧姆端接电缆将适配器相互连接
  • 启动 cangen 指向 can0 并使用 candump 验证消息到达 can1
  • 从 can0 接口录制的 candump 文件。
  • 尝试使用canplayer重现文件,但没有成功。

我已经在两台运行 Ubuntu 12.04 的不同机器上尝试了这些测试,结果相同。

你知道这可能是什么原因吗?

4

2 回答 2

20

看来我以错误的方式记录了日志文件。

我的日志文件使用以下命令进行记录:

$ candump -ta vcan0 "log.candump"

但是,该命令以人类可读的格式记录日志:

  vcan0  1B3   [8]  8E 02 74 22 55 70 49 30
  vcan0  658   [6]  27 48 2C 56 14 0A
  vcan0  1F8   [2]  77 99
  vcan0  7B7   [8]  33 A2 24 38 B2 78 86 72
  vcan0  43C   [8]  92 C6 81 2E FC 5E 38 35
  vcan0  7B0   [2]  2D 1B

为了记录可以使用 canplayer 播放的日志文件,它们应该使用以下任一方式记录

$ candump -l vcan0

或者

$ candump -L vcan0 > myfile.log

录制的文件将如下所示:

(1436509052.249713) vcan0 044#2A366C2BBA
(1436509052.449847) vcan0 0F6#7ADFE07BD2
(1436509052.650004) vcan0 236#C3406B09F4C88036
(1436509052.850131) vcan0 6F1#98508676A32734
(1436509053.050284) vcan0 17F#C7
(1436509053.250417) vcan0 25B#6EAAC56C77D15E27
(1436509053.450557) vcan0 56E#46F02E79A2B28C7C
(1436509053.650713) vcan0 19E#6FE1CB7DE2218456
(1436509053.850870) vcan0 1A0#9C20407F96EA167B
(1436509054.051025) vcan0 6DE#68FF147114D1

可以使用以下命令在 canplayer 中重播该格式的文件:

$ canplayer -I candump-2015-07-10_081824.log

或者

$ cat candump-2015-07-10_081824.log | canplayer

这个答案的功劳归于 Oliver Hartkopp。

于 2015-07-17T17:32:34.447 回答
1

我发现这篇文章有一些关于使用 can 和 vcan 的重要信息。在使用 candump 记录物理 CAN 总线之后

$ candump -l can0

如上一个答案所述。我使用以下内容通过虚拟 CAN 总线播放它。

$ canplayer vcan0=can0 -I candump-may-14-2015.log

于 2017-03-31T12:15:44.053 回答