Я пытаюсь подключиться к устройству ELM327 через Bluetooth. Используемая мной библиотека:
https://github.com/eltonvs/java-obd-api
Установка соединения Bluetooth работает нормально, и я могу перезагрузить устройство:
BluetoothDevice device = bluetoothAdapter.getRemoteDevice(deviceAddress);
UUID uuid = UUID.fromString("00001101-0000-1000-8000-00805F9B34FB");
final BluetoothSocket socket;
try {
socket = device.createInsecureRfcommSocketToServiceRecord(uuid);
socket.connect();
Log.d("xx", "1. Reset");
ObdResetCommand obdResetCommand = new ObdResetCommand();
obdResetCommand.run(socket.getInputStream(), socket.getOutputStream());
System.out.println(obdResetCommand.getFormattedResult());
Log.d("xx", "2. Echo Off");
EchoOffCommand echoOffCommand = new EchoOffCommand();
echoOffCommand.run(socket.getInputStream(), socket.getOutputStream());
System.out.println(echoOffCommand.getFormattedResult());
Log.d("xx", "3. LineFeed Off");
LineFeedOffCommand lineFeedOffCommand = new LineFeedOffCommand();
lineFeedOffCommand.run(socket.getInputStream(), socket.getOutputStream());
System.out.println(lineFeedOffCommand.getFormattedResult());
}
Вывод:
D / xx: 1. СбросI / System.out: ELM327v1.5D / xx: 2. Echo OffI / System.out: ОКD / xx: 3. LineFeed Off I / System.out: OK
Часть, которая не работает, - это выбор протокола и считывание значения напряжения:
SelectProtocolCommand selectProtocolCommand = new SelectProtocolCommand(ObdProtocols.AUTO);
try {
selectProtocolCommand.run(socket.getInputStream(), socket.getOutputStream());
} catch (IOException | InterruptedException e) {
e.printStackTrace();
}
ModuleVoltageCommand moduleVoltageCommand = new ModuleVoltageCommand();
try {
moduleVoltageCommand.run(socket.getInputStream(), socket.getOutputStream());
} catch (IOException | InterruptedException e) {
e.printStackTrace();
}
Я вижу, что выбор протокола завершается очень быстро без вывода,Когда я сравниваю часть выбора протокола с другими приложениями, такими как «lite lite», это занимает намного больше времени, и я вижу мигающие огни на моем устройстве ELM327, чего не происходит при запуске моего кода.
Тогда происходит сбой ModuleVoltageCommandс:
br.ufrn.imd.obd.exceptions.UnableToConnectException: Ошибка при запуске блока питания модуля управления [01 42], ответ: ... UNABLETOCONNECT
IУбедитесь, что ключ работает с другими приложениями, поэтому это должно быть проблемой с моим кодом.
Что я делаю не так?