2013-08-30 4 views
5

Я написал код, который успешно может найти сопряженный OBD и установить соединение с ELM327, но когда я пытаюсь отправить команду ATZ, приложение получает авария.Не удалось отправить команду ATZ в ELM 327 после установления соединения с ELM327 в android

Вот фрагмент кода, я могу сделать неправильно

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

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

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

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

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

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

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

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

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

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

     sendDataToOBD(btSocketConnected, "010C\r"); 

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

     sendDataToOBD(btSocketConnected, "010D\r"); 

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

     sendDataToOBD(btSocketConnected, "0104\r"); 

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

     sendDataToOBD(btSocketConnected, "0105\r"); 

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

     sendDataToOBD(btSocketConnected, "012F\r"); 

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

     return dataRetriever; 

    } 

Я не уверен, где я делал ошибки, поэтому им разделяя поток всего кода в виде два сути, https://gist.github.com/sankarganesh/6376031, это суть держит Файл активности и еще один текст для Bluetooth Socket Listener https://gist.github.com/sankarganesh/6376039

+0

Ошибка приложения -> у нас есть стек? –

+0

@ Skaard-Solo: Несмотря на то, что я написал блок catch try и попытаюсь восстановить трассировку стека в файле, находящемся под тестовой папкой на SD-карте, я не смог захватить трассировку стека при тестировании с помощью своего автомобиля. –

+0

@ Skaard-Solo :: Я прошу вас пройти через суть, которую я поделился в Вопросе, и передать мне, ошибочно ли я использовал команды –

ответ

0

Проблема может заключаться в том, что после подсказки > CR не отправляется с ELM-устройства на компьютер. Если ваш последовательный входной буфер настроен с завершением CR, произойдет тайм-аут.

 Смежные вопросы

  • Нет связанных вопросов^_^