2013-02-27 30 views
9

Tôi đang cố gắng gửi lệnh từ ANDROID đến giao thức ELM327/OBD2 (các lỗi Chẩn đoán WIFI). Tôi đã tải xuống api hoặc thư viện từ: https://github.com/pires/android-obd-reader Sự cố api này không có bất kỳ tài liệu nào. Chúng tôi cần trợ giúp về lệnh và giao thức để trao đổi dữ liệu. Cảm ơn!ANDROID ELM327/OBD2 PROTOCOL

Trả lời

13

Bạn thực sự muốn biết điều gì?

Với giao thức ELM327 khá dễ dàng. Bạn chỉ cần gửi một PID trong ASCII, và bạn sẽ nhận được một câu trả lời trong ASCII. Nó dựa trên việc bỏ phiếu. Vì vậy, bạn sẽ nhận được 1 câu trả lời cho 1 yêu cầu. Miễn là bạn không gửi, bạn không nhận được.

Để chuyển đổi và lệnh nào cần gửi, hãy kiểm tra các liên kết tôi đã cung cấp.

Một số chi tiết liên kết:

AT Commands
OBD-II Commands

+0

AT Liên kết lệnh được cập nhật. https://www.sparkfun.com/datasheets/Widgets/ELM327_AT_Commands.pdf –

+1

Chỉnh sửa câu trả lời như được đề xuất. –

3

Nếu bạn muốn sử dụng thư viện này, bạn nên tải về mã nguồn. Mã nguồn là tự giải thích. Ngoài ra còn có mã nguồn của một ứng dụng ví dụ. Tôi đã cố gắng chạy ứng dụng ví dụ, nhưng nó không làm việc cho tôi. Tuy nhiên, tôi đã xem xét mã nguồn và nó đã giúp tôi cho ứng dụng của mình.

Trong thư viện này, bạn sẽ tìm thấy các truy vấn chính đã được triển khai và dễ sử dụng. Tôi chỉ tìm thấy lỗi trên lớp ObdResetCommand. Lớp này thực hiện các lớp siêu ObdCommand và nó sẽ ghi đè các phương pháp readResult theo cách này:

@Override 
public void readResult(InputStream in) throws IOException { 
    // do nothing 
    return; 
} 

Để làm cho nó làm việc, bạn nên loại bỏ phương pháp trọng này để sử dụng các siêu lớp một. Nếu bạn không làm điều đó, câu trả lời sẽ không được đọc và nó sẽ được đọc trong lệnh sau, sao cho mọi câu trả lời sẽ bị trì hoãn một truy vấn.

Tôi hy vọng điều đó sẽ hữu ích.

+0

bạn có thể vui lòng xem Câu hỏi này http://stackoverflow.com/questions/18528792/unable-to-send-atz-command-to-elm-327-after-establishing-connection-with-elm327 –

Các vấn đề liên quan