ich möchte erstmal ein freundliches "HALLO" in die Runde werfen.
Mein eigentliches Gebiet ist Programmierung auf Windows Basis (Datenbanken Access VB/VB.net) unter Linux habe ich mir bisher immer mit Perl soweit helfen können - jetzt habe ich hier ein kleines Projekt auf Basis eines Respberry PI bei dem ich mit Perl nicht weiter komme und bin daher notgedrungen nun bei Python gelandet.
Es geht um die Ansprache einer Seriellen Schnittstelle (nicht mal Hardware sondern eine emulierte Bluetooth/Serial verbindung). Das klappt soweit auch alles schon ganz prima...
Dabei geht es darum einen OBD II Adapter per RPI abzufragen und die Rückgabewerte dann auszuwerten.
Diese Adapter werden per klassischem AT Kommand Syncron angesprochen.
Also z.B:
wir senden "ATZ" - der Adapter macht nen RESET und sendet "OK"
wir senden "ATL1" - der Adapter aktiviert Linefeed und sendet ein OK zurück
wir senden eine Anfrage an den CANBUS Freeze Frame Daten zu liefern "2105" - wir erhalten z.b:
Code: Alles auswählen
7EA037F2112
7EB037F2112
7EC102D6105FFFFFFFF
7EC2100000000001616
7EE037F2112
7EC22161616161616A4
7EC2326480001501516
7EC2403E800000000C8
7EC2500310000000000
7EC2600000000000000
Prinzipiell bin isch schon mal begeistert dass die grundlegende Kommunikation mit der Schnittstelle und dem Bluetooth OBD Adapter funktioniert - aber das ist noch eher trial and error als was anderes ...
Hier mal das Machwerk mit dem ich aktuell teste:
Code: Alles auswählen
import serial
import re
import time
import string
import io
ser = serial.Serial("/dev/rfcomm0", timeout=None)
ser.baudrate = 9600
ser.flushInput()
ser.write(b'ATL1\r\n')
time.sleep(5)
ser.write(b'2105\r\n')
ser.flush()
seq = []
while True:
reading = ser.read()
seq.append(reading)
joineddata = ' '.join(str(v) for v in seq).replace(' ', '')
print joineddata
err = re.search('ERROR', joineddata)
if err:
break
BTW: ich weiß dass es für python ein OBD Modul gibt - das beinhaltet aber nur standard PID´s - damit kann ich leider nix anfangen ...
Wäre toll wenn mir jemand einen "schub" in richtung nach vorne versetzten könnte.
cu
GTR