2013-08-30 19 views
5

Eşleştirilmiş OBD'yi bulup ELM327 ile bağlantı kurabilen bir kod yazdım ama ATZ komutunu göndermeye çalıştığımda uygulama kazasında. İşte ELM 327'ye ELM327 ile bağlantı kurduktan sonra ATM komutu gönderilemedi.

im iki ana fikri, https://gist.github.com/sankarganesh/6376031 olarak tüm kodun akışını paylaşımı böylece, bu özü tutan ı hataları yapmış, nerede,

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; 

    } 

emin değilim yanlış yapmış olabilir kod snippet'ine Aktivite dosyası ve Bluetooth Soket Dinleyicisi https://gist.github.com/sankarganesh/6376039

+0

Uygulama kazası -> bir stacktrace alabilir miyiz? –

+0

@ Skaard-Solo: try catch bloğunu yazmış ve sd kartında test klasörünün altında bulunan bir dosyada yığın izini kaydetmeye çalışmış olsam da, arabamla test ederken yığın izini yakalayamadım. –

+0

@ Skaard-Solo :: Soruda paylaştığım ve yanlış kullanıp kullanmadığımı bana iletmeni istiyorum –

cevap

0

için bir adet daha bir sorun Sorun, > istem işaretinden sonra ELM aygıtından bilgisayara CR gönderilmemesi olabilir. Seri giriş arabelleğiniz bir CR tarafından sonlandırılarak yapılandırılmışsa, zaman aşımı gerçekleşir.