2

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

TX:ATI RX:ELM327 v1.5a

发送:ATE0 接收:ATE0 正常

发送:ATSP6 接收:好的

TX:ATH1 RX:好的

TX:ATL1 RX:好的

TX:ATCFC1 接收:好的

TX:ATFCSM0 RX:正常

TX:ATAL RX:好的

TX:ATSH782 RX:好的

发送:ATCRA783 接收:?

TX:ATST64 RX:好的

发送:1092 接收:783 02 1A 87

发送: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”并接收响应?

4

2 回答 2

1

这很容易,我猜..

使用ATCFC0命令,即可处理所有来自控制单元的响应帧,需要手动发送流量控制帧。

于 2015-07-02T13:16:34.587 回答
0

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

这是我在与 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

希望它有帮助!

于 2016-08-11T08:25:17.963 回答