我正在尝试制作一个在Windows下运行并与ELM327设备通信的软件。我创建了第一个版本,然后我使用了SMART ForTwo(SMART 451)车辆,并设法连接仪表盘(传输CAN ID为782,接收CAN ID为783)。但是我的Flow Control存在很大问题。这是日志:
TX:ATI RX:ELM327 v1.5a TX:ATE0 RX:ATE0 OK TX:ATSP6 RX:好的 TX:ATH1 RX:好的 TX:ATL1 RX:好的TX:ATCFC1 RX:好的
TX:ATFCSM0 RX:好的
TX:ATAL RX:好的 TX:ATSH782 RX:好的 TX:ATCRA783 RX:? TX:ATST64 RX:好的 TX:1092 RX: 783 02 1A 87 TX:1A87 RX: 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”并收到回复?
答案 0 :(得分:1)
这很容易,我想..
使用ATCFC0命令,然后您可以处理来自控制单元的所有响应帧,并且您需要手动发送流控制帧。
答案 1 :(得分:1)
这是一个老帖子,但可能会帮助别人!
这是我在与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
希望它有所帮助!