User Tools

Site Tools


de:doc:tools_oobdcmd

OOBDcmd - OOBD auf der Kommandozeile

OOBDcmd ist ein kleines Softwarewerkzeug, speziell entwickelt, um einfach mit einem Fahrzeug zu kommunizieren, waehrend automatisierte Tests an Ihm ueber den OOBD Dongle wie CAN-Invader durchfuehrt werden.

Um dies zu ermoeglichen, arbeitet OOBDcmd wie ein Kommandozeilenwerkzeug:

Beim Start verbindet es sich selbst mit dem Dongle ueber eine festgelegte Bluetooth MAC Addresse. Nachdem diese Verbindung hergestellt ist, ueberprueft OOBDcmd, ob das angesprochene Bluetooth Geraet wirklich ein OOBD Dongle ist. Falls Ja, uebermittelt es die optional gegebene Kommandozeilensequenz. Am Ende gibt es einen optionalen Fehlercode zurueck und die zuletzt empfangenen Anwort vom Dongle.

Installation

OOBDcmd ist nicht ein gewoehnliches Programm, sondern nur ein Python Skript. Deswegen muss eine Python Version >=3.4 auf dem Computer installiert sein. Um diese zu installieren

Nutzung

Weil OOBDcmd ein Kommandozeilentool ist, muss es von einem Kommandozeilenprompt gestartet werden. Falls Du nicht weisst as das ist, wirst Du auch OBDcmd nicht benoetigen…

Stelle sicher das der Python Interpreter in dem Suchpfad fuer ausfuehrbare Programme ist. Falls Probleme auftauchen, folge der Python Dokumentation.

  • Oeffne die Kommandozeile
  • wechsele zu Verzeichnis in dem Du das oobdcmd.py Skript abgespeichert hast

Nun kannst Du das Skript aufrufen

python oobdcmd.py
Usage: oobdcmd.py BT-MAC-Address ['cmdset[,cmdset]']
for detailed information goto http://www.oobd.org/doku.php?id=doc:tools_oobdcmd

OOBDcmd kann mit der MAC Adresse des Bluetooth Dongle und optional mit einem oder mehreren Kommandozeilensequenzen aufgerufen werden.

Wenn es ohne Kommandozeilensequenz aufgerufen wird, ueberprueft es nur die Verbindung und eine korrekte Anwort vom Dongle.

Falls erfolgreich, ist der zurueckgebene Fehlerkode die 0, andernfalls 1 (Bluetoothfehler) oder 2 (Dongle Identifikationsfehler)

Die Maechtigkeit von OOBDcmd, kommt aus der Faehigkeit sich durch eine komplette Kommandozeilensequenz zu arbeiten, die sogenannten cmdsets.

Cmdsets: Kommandozeilensequenz

Eine Kommandozeilensequenz besteht aus einer oder mehreren Kommandozeilesequenzen, unterteilt mit , . Die gesamte Kommandozeilensequenz muss in ' ' eingeschlossen sein

Ein Kommandosatz besteht aus einer OOBD Eingabezeile (cmd) und einem regulaeren Ausdruck (regex), getrennt mit einem |

Die OOBD Eingabezeile cmd wird erklaert in OOBD Firmware Syntax. Vergesse bitte nicht, das Eingabekommando mit einem anhaengenden “\r” enden zu lassen

Das regex Format wird erklaert in Python regex tutorial

Wenn also OOBDcmd durch die Kommandozeilensequenz geht, nimmt es jeden Kommandosatz und sendet es zum Dongle. Nachdem es die Antwort empfangen hat, vergleicht es Ihn gegen den regulaeren Ausdruck. Falls der Regulaere Ausdruck gueltig ist, faehrt es mit dem naechsten Kommandosatz fort. Falls der Regulaere Ausdruck ungueltig ist, schreibt OOBDcmd die empfangene Antwort auf die Standartausgabe und wird dann beendet mit dem Rueckgabekode 3 (Fehler in der Kommandosequenz)

Falls der letzte Kommandosatz erfolgreich abgeschlossen wurde, schreibt OOBDcmd die zuletzt empfangene Antwort auf die Standartausgabe und beendet die Programausfuehrung mit dem Rueckgabekode 0 (= keine Fehler)

Beispiele

Hier sind einige Beispiele. Bitte beachte, das aus Geheimhaltungsgruenden die IDs und DIDs kuenstlich hergestellt sind und keine realen Werte abbilden. Wenn Du diese Beispiele 1:1 uebernimmst, wird es nicht funktionieren

Auslesen des Dongle Firmware Versionsstrings

python3.4 oobdcmd.py 00:12:6F:2B:F0:84 'p 0 0 0\r|.*(OBD).*' 
>echo $?  # ermittle den Program exit Kode
0

Wieder das Auslesen des Firmware Versionsstrings, aber nun mit einem nicht passenden regulaeren Ausdruck , welches dann einen Fehlerkode erzeugt

python3.4 oobdcmd.py 00:12:6F:2B:F0:84 'p 0 0 0\r|.*(O-D).*'
>echo $?  # ermittle den Program exit Kode
2

Schreibe das Ergebnis in eine Datei

python3.4 oobdcmd.py 00:12:6F:2B:F0:84 'p 0 0 0\r|.*(OBD).*' > version.txt
>echo $?  # ermittle den Program exit Kode
0
>more version.txt 
OOBD D2a 715 Lux-Wolf CAN-Invader Fri, 15 Nov 2013 17:37:58 +0100

Nun etwas Spannenderes: Waehle den Highspeed Bus, konfiguriere Ihn, setze die Filter und Modul IDs und teste via tester present, ob das Modul antwortet

python3.4 oobdcmd.py 00:12:6F:2B:F0:84 'p 8 2 0\r|\.,p 8 3 0\r|\.,p 8 2 3\r|\.,p 6 5 $620\r|\.,p 8 10 1 $7FE\r|\.,p 8 11 1 $0000\r|\.,2002\r|^(60)'
>echo $?  # ermittle den Program exit Kode
0

Und nun eine große komplette Anwendung: Initialisiere und lese die Fahrzeugkonfiguration aus

python3.4 oobdcmd.py 00:12:6F:2B:F0:84 'p 8 2 0\r|\.,p 8 3 0\r|\.,p 8 2 3\r|\.,p 6 5 $620\r|\.,p 8 10 1 $7FE\r|\.,p 8 11 1 $0000\r|\.,32F106\r|^(62)'
 
 
62f106fccc04020100600204011101080100000001000200000201020200040200000100010100000000000200000307010000010000000000000000000302000101020100030102001366310002010400000100000100010001000202000000000100000100000000000000000704000200010000020001000100000000000000000000000000000000000002000000000300040001000000020000000000000001000000000000000000000000020003000000000000000000000000000002000001000100000000000000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002e
>echo $?  # ermittle den Program exit Kode
0

Eingabe / Ausgabe

Alle Statusinformationen werden nach stderr geschrieben, die zuletzt empfangene Antwort wird auf die Standardausgabe geschrieben (mehrere Zeilen werden aneinandergehaengt in einer einzigen Zeile ausgegeben , die angehaengte .\r> Sequenz wird abgeschnitten), ebenfalls gibt auch OBBDcmd einen gueltigen Programm exit Kode zurueck

This website uses cookies for visitor traffic analysis. By using the website, you agree with storing the cookies on your computer.More information
de/doc/tools_oobdcmd.txt · Last modified: 2015/02/15 08:40 by wsauer