can-bus - 使用 ELM327 接收 CAN 报文时的流量控制报文

标签 can-bus obd-ii elm327

我正在尝试制作一个在 Windows 下运行并与 ELM327 设备通信的软件。我创建了第一个版本,然后我进入了我的 SMART ForTwo (SMART 451) 车辆,我设法连接了仪表盘(发送 CAN ID 为 782,接收 CAN ID 为 783)。但是我对流量控制有很大的问题。这是日志:

TX:ATI 接收端:ELM327 v1.5a

TX:ATE0 接收:ATE0 正常

TX:ATSP6 接收:好的

TX:ATH1 接收:好的

TX:ATL1 接收:好的

TX:ATCFC1 接收:好的

TX:ATFCSM0 接收:好的

TX:阿塔尔 接收:好的

TX:ATSH782 接收:好的

TX:ATCRA783 接收:?

TX:ATST64 接收:好的

TX:1092 接收:783 02 1A 87

TX: 1A87 接收:783 10 16 5A 87 05 6E 00 08

我使用了另一个工具,我看到 ELM327 设备立即发送流量控制帧。是这样的:

891.438 782 02 1A 87

891.444 783 10 16 5A 87 05 6E 00 08

891.444 782 30 00 00 00 00 00 00 00

如您所见 - 流量控制帧与从其他设备发送的第一帧同时发送。我确定其他设备在接收“流量控制”帧时遇到问题。 我研究了 ELM327 文档,但没有找到有关如何延迟流控制帧的任何信息。 我应该如何正确发送请求“1A 87”并收到响应?

最佳答案

这是一个旧帖子,但可能对其他人有帮助!

这是我在与 SPI 连接的 MCP2515 上使用第一帧 (FF) 和流量控制 (FC) 的经验。

首先,您应该始终在 FF 消息之后发送 FC 消息,而不是同时发送。

其次,诊断读取器可以使用 ECU 响应帧中的 ID 继续与特定 ECU 通信。特别是,多帧通信需要响应特定的 ECU ID 而不是 ID 7DF。用通俗易懂的语言,您不应该发送 ID 为 7DF 的 FF 消息,您应该对您希望接收连续帧的确切 ECU 进行寻址。例如请求汽车 VIN(基于 Golf VII 的真实信息):

7DF 02 09 00 00 00 00 00 00//发送请求

7E8 10 14 49 02 01 57 56 57//从主ECU接收

7E0 30 00 00 00 00 00 00 00//寻址主 ECU 而不是 7DF !!

7E8 21 5A 5A 5A 41 55 5A 45//连续消息由7E0发送!

7E8 22 50 35 33 30 36 38 35

希望对您有所帮助!

关于can-bus - 使用 ELM327 接收 CAN 报文时的流量控制报文,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29213988/

相关文章:

java - 试图理解 CANopen 的程序员

bluetooth - 福特 CAN 数据和 ELM327

java - 如何与 OBD-II 设备通信

android - 蓝牙聊天应用回复我发送的相同文本

java - 使用Java FTDI lib - jd2xx - openport1.3 USB电缆创建OBD2 MUT扫描仪

带队列的Python线程: how to avoid to use join?

can-bus - 在我不知道所应用的所有 ID 的系统中,如何避免 CAN 总线上的重复 ID?

obd-ii - 我可以使用 elm327 接口(interface)连接到汽车的 CAN 总线吗?

can-bus - 如何使用 ELM327 发送自定义 CAN 消息?

android - BluetoothChat-to-ELM327 拆分响应消息