Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
2.3k views
in Technique[技术] by (71.8m points)

can bus - Flow control message while receiving CAN message with ELM327

I am trying to make a software, which runs under Windows and communicates with an ELM327 device. I created the first version and I went in my SMART ForTwo (SMART 451) vehicle and I managed to connect with the Instrument Cluster (Transmit CAN ID is 782, Receive CAN ID is 783). However I have a huge problem with Flow Control. Here is the log:

TX: ATI RX: ELM327 v1.5a

TX: ATE0 RX: ATE0 OK

TX: ATSP6 RX: OK

TX: ATH1 RX: OK

TX: ATL1 RX: OK

TX: ATCFC1 RX: OK

TX: ATFCSM0 RX: OK

TX: ATAL RX: OK

TX: ATSH782 RX: OK

TX: ATCRA783 RX: ?

TX: ATST64 RX: OK

TX: 1092 RX: 783 02 1A 87

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

I used another tool and I saw that the ELM327 device sends the Flow Control Frame, immediately. It is like this:

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

As you can see - Flow Control frame is sent at exactly the same time as the First Frame, that is sent from the other device. I am sure that the other device has a problem to receive the "Flow Control" frame. I studied the ELM327 documentation, but did not find any info about how to delay the Flow Control frame. How should I correctly send the request "1A 87" and receive the response?

See Question&Answers more detail:os

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Reply

0 votes
by (71.8m points)

It's very easy, I guess..

Use the ATCFC0 command, and then you can process all the response frames from the control unit, and you need to manually send the flow control frame.


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
OGeek|极客中国-欢迎来到极客的世界,一个免费开放的程序员编程交流平台!开放,进步,分享!让技术改变生活,让极客改变未来! Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...