我正在使用 ELM327,我希望能够设置要发送的 CAN 消息的标头和数据部分。我看到有一个代码用于设置消息的标题
SH xxyyzz
但是我很难找出如何设置数据部分并控制何时发送消息。
当我发送一个带有额外字符的 PID 的 ASCII 请求作为数据字段时,这两种情况都会发生吗?
那会使用 SH 命令设置的标头吗?
有一个更好的方法吗?
我正在使用 ELM327,我希望能够设置要发送的 CAN 消息的标头和数据部分。我看到有一个代码用于设置消息的标题
SH xxyyzz
但是我很难找出如何设置数据部分并控制何时发送消息。
当我发送一个带有额外字符的 PID 的 ASCII 请求作为数据字段时,这两种情况都会发生吗?
那会使用 SH 命令设置的标头吗?
有一个更好的方法吗?
如果您使用的是 ELM327,并且您使用的是 J1850 vpw 或 J1850 pwm(早于 2003 年的 CAN 车辆)等协议。那么您将使用它来设置标头。
标头包含 xx yy zz xx = 消息的优先级(即 68) yy = 您要与之交谈的模块的目标地址(即 5A) zz = 发送者地址,通常可以是 F1
所以你的命令看起来像这样 ATSH 68 5A F1
这设置了标题.. 现在您要发送数据。您从现在开始发送的任何数据都将使用该标头,并将数据发送到该模块。
所以如果你想得到 RPM,你可以发送 01 0C 你会得到类似 41 0C 23 的东西。最后一个数据字节是 RPM 的值。不过,您将必须弄清楚将其转换为人类可读格式的公式。在这里可以找到很多信息。
https://en.wikipedia.org/wiki/OBD-II_PIDs
顺便说一句,如果您在 CAN 网络上进行通信,您只需使用模块 ID 作为标头.. ATSH 7E0,然后发送您的数据。所有 2008 年以上的车辆都是 CAN .. 一些 2003-2007 年也是。
这可能是一个老问题,但我刚刚找到了一个在线链接,它详细描述了如何使用 ELM327 发送任意 CAN 消息。所以任何人(比如我)通过这个问题仍然可以找到一个有效的答案。
在此处查看有关使用 ELM327 发送任意 CAN 消息的详细信息: https ://www.elmelectronics.com/wp-content/uploads/2017/11/AppNote07.pdf
最好的
如果您使用的是 ELM327 芯片组,则需要先调用 ATSH 或 AT SH 来设置标头。然后单独发送消息(数据字节)。
https://www.sparkfun.com/datasheets/Widgets/ELM327_AT_Commands.pdf