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
587 views
in Technique[技术] by (71.8m points)

bluetooth - Unable to send ATZ command to ELM 327 after establishing connection with ELM327 in android

I have written a code which is successfully able to find the paired OBD and establish the connection with ELM327 but when i am trying to send ATZ command the application gets crash.

Here's the code snippet, I may have done wrong

public HashMap<String, String> startOBDCommunicator(
            BluetoothSocket btSocketConnected, String paramClassName,
            String methodName) {

        HashMap<String, String> dataRetriever = new HashMap<String, String>();
        sendDataToOBD(btSocketConnected, "ATZ
");
        dataRetriever.put("Reset", readDataFromOBD(btSocketConnected));

        sendDataToOBD(btSocketConnected, "ATS0
");
        dataRetriever.put("Space Control", readDataFromOBD(btSocketConnected));

        sendDataToOBD(btSocketConnected, "ATE0
");
        dataRetriever.put("Echo control", readDataFromOBD(btSocketConnected));

        sendDataToOBD(btSocketConnected, "ATL0
");
        dataRetriever.put("Line feed", readDataFromOBD(btSocketConnected));

        sendDataToOBD(btSocketConnected, "ATAT0
");
        dataRetriever
                .put("Adaptive Timing", readDataFromOBD(btSocketConnected));

        sendDataToOBD(btSocketConnected, "ATST10
");
        dataRetriever.put("Time Out", readDataFromOBD(btSocketConnected));

        sendDataToOBD(btSocketConnected, "ATI
");
        dataRetriever.put("Device Description",
                readDataFromOBD(btSocketConnected));

        sendDataToOBD(btSocketConnected, "ATDP
");
        dataRetriever.put("Protocol Information1",
                readDataFromOBD(btSocketConnected));

        sendDataToOBD(btSocketConnected, "ATSPA0
");
        dataRetriever
                .put("Auto Protocol",
                        readBytesFromOBD(btSocketConnected, paramClassName,
                                methodName));

        sendDataToOBD(btSocketConnected, "010C
");

        dataRetriever
                .put("RPM param",
                        readBytesFromOBD(btSocketConnected, paramClassName,
                                methodName));

        sendDataToOBD(btSocketConnected, "010D
");

        dataRetriever
                .put("Speed parameters",
                        readBytesFromOBD(btSocketConnected, paramClassName,
                                methodName));

        sendDataToOBD(btSocketConnected, "0104
");

        dataRetriever
                .put("engine load value parameters",
                        readBytesFromOBD(btSocketConnected, paramClassName,
                                methodName));

        sendDataToOBD(btSocketConnected, "0105
");

        dataRetriever
                .put("Engine coolant temperature parameters",
                        readBytesFromOBD(btSocketConnected, paramClassName,
                                methodName));

        sendDataToOBD(btSocketConnected, "012F
");

        dataRetriever
                .put("Fuel Level Input",
                        readBytesFromOBD(btSocketConnected, paramClassName,
                                methodName));

        return dataRetriever;

    }

I m not sure where i have done mistakes , so i m sharing the flow of the entire code as two gist , https://gist.github.com/sankarganesh/6376031, this gist holds the Activity file and one more gist for Bluetooth Socket Listener https://gist.github.com/sankarganesh/6376039

See Question&Answers more detail:os

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

1 Reply

0 votes
by (71.8m points)

The problem might be that after the prompt sign > no CR is sent from the ELM-device to the computer. If your serial input buffer is configured with termination by a CR, a timeout will happen.


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

...