iOS = WiFiBT = Android
Ich habe noch einen orig. OBD BT Adapter bei mir liegen, den ich nicht mehr brauche.
Wenn du den haben magst, dann schreib mir eine PN.
Es ist der orig. Adapter, den Ulrich immer wieder mal bei ebay verkauft.
Danke. Ich habe mir gestern bereits einen bei ihm bestellt.
Dabei ist zu beachten, dass ihm eine Nachricht geschrieben werden muss, wenn die Brück für Pin 7 + 8 gesetzt werden muss - ist bei mir der Fall. Den Hinweis hat er in rot in der Produktbeschreibung stehen, samt der Modellreihen die das benötigen.
Weiterhin der Hinweis: "Durch den Verkauf dieses Adapters unterstützen Sie die Open Source Entwicklung." Ich empfehle also fleißig dort einzukaufen (sobald verfügbar).
Zu meiner Frage 1:
Mit Test-O hatte ich leider keinen Erfolgt. Sah bei mir zwar in etwa so aus wie bei T-1311, aber im rechten Fenster Values 1# wurde bei mir nichts dargestellt. Warum, weiß ich ich nicht.
Ich habe nun mit dem BEST Disassembler die PRG-Dateien in eine B1V-Datei umgewandelt. Darin sind dann - leider nicht so schön - die Werte aufgelistet, die man aus dem jeweiligen Steruergerät auslesen kann.
Dazu einfach die Kommandozeile aufrufen und folgendes für jede SGBD ausführen:
pfad1\BESTDIS.exe pfad2\msv70.prg > pfad3\msv70.b1v
Wenn ich die Werte so schön in einer Liste / Tabelle haben möchte, wie sie für bspw. den N52 u.Ä. im Post 1 zu finden sind, dann muss ich wohl noch ein wenig Fleißarbeit investieren.
Zu meiner Frage 2:
Hierzu habe ich über das Wochenende lang und breit mit Ulrich korrespondiert. Letzendlich hat es tasächlich funktioniert, nach vielen Versuchen. Dazu ein Beispiel anhand des DSC, MFL und ACSM im Anhang.
<?xml version="1.0" encoding="utf-8"?>
<fragment xmlns="http://www.holeschak.de/BmwDeepObd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.holeschak.de/BmwDeepObd BmwDeepObd.xsd">
<page name="!PAGE_NAME" display-mode="list" fontsize="small" gauges-portrait="2" gauges-landscape="4" logfile="MFL2_{D}.log">
<strings>
<string name="!PAGE_NAME">mfl2</string>
<string name="!JOB#STATUS_RADGESCHWINDIGKEIT#STAT_RAD_GESCHW_VL_WERT">STAT_RAD_GESCHW_VL_WERT</string>
<string name="!JOB#STATUS_RADGESCHWINDIGKEIT#STAT_RAD_GESCHW_VR_WERT">STAT_RAD_GESCHW_VR_WERT</string>
<string name="!JOB#STATUS_RADGESCHWINDIGKEIT#STAT_RAD_GESCHW_HL_WERT">STAT_RAD_GESCHW_HL_WERT</string>
<string name="!JOB#STATUS_RADGESCHWINDIGKEIT#STAT_RAD_GESCHW_HR_WERT">STAT_RAD_GESCHW_HR_WERT</string>
<string name="!JOB#STATUS_LESEN#STAT_SEEK_UP_BETAETIGT">STAT_SEEK_UP_BETAETIGT</string>
<string name="!JOB#STATUS_LESEN#STAT_VOL_UP_BETAETIGT">STAT_VOL_UP_BETAETIGT</string>
<string name="!JOB#STATUS_LESEN#STAT_VOL_DOWN_BETAETIGT">STAT_VOL_DOWN_BETAETIGT</string>
<string name="!JOB#STATUS_LESEN#STAT_SEEK_DOWN_BETAETIGT">STAT_SEEK_DOWN_BETAETIGT</string>
<string name="!JOB#STATUS_GURTKONTAKTE#STAT_GKF_WERT">STAT_GKF_WERT</string>
<string name="!JOB#STATUS_LESEN#STAT_GURTSCHLOSS_FA_GESTECKT">STAT_GURTSCHLOSS_FA_GESTECKT</string>
</strings>
<jobs>
<job id="1" sgbd="dsc_85" name="STATUS_RADGESCHWINDIGKEIT" results="STAT_RAD_GESCHW_VL_WERT;STAT_RAD_GESCHW_VR_WERT;STAT_RAD_GESCHW_HL_WERT;STAT_RAD_GESCHW_HR_WERT">
<display name="!JOB#STATUS_RADGESCHWINDIGKEIT#STAT_RAD_GESCHW_VL_WERT" result="1#STAT_RAD_GESCHW_VL_WERT" format="" log_tag="STAT_RAD_GESCHW_VL_WERT" />
<display name="!JOB#STATUS_RADGESCHWINDIGKEIT#STAT_RAD_GESCHW_VR_WERT" result="1#STAT_RAD_GESCHW_VR_WERT" format="" log_tag="STAT_RAD_GESCHW_VR_WERT" />
<display name="!JOB#STATUS_RADGESCHWINDIGKEIT#STAT_RAD_GESCHW_HL_WERT" result="1#STAT_RAD_GESCHW_HL_WERT" format="" log_tag="STAT_RAD_GESCHW_HL_WERT" />
<display name="!JOB#STATUS_RADGESCHWINDIGKEIT#STAT_RAD_GESCHW_HR_WERT" result="1#STAT_RAD_GESCHW_HR_WERT" format="" log_tag="STAT_RAD_GESCHW_HR_WERT" />
</job>
<job id="2" sgbd="mfl2" name="STATUS_LESEN" results="STAT_SEEK_UP_BETAETIGT;STAT_VOL_UP_BETAETIGT;STAT_VOL_DOWN_BETAETIGT;STAT_SEEK_DOWN_BETAETIGT">
<display name="!JOB#STATUS_LESEN#STAT_SEEK_UP_BETAETIGT" result="1#STAT_SEEK_UP_BETAETIGT" format="" log_tag="STAT_SEEK_UP_BETAETIGT" />
<display name="!JOB#STATUS_LESEN#STAT_VOL_UP_BETAETIGT" result="1#STAT_VOL_UP_BETAETIGT" format="" log_tag="STAT_VOL_UP_BETAETIGT" />
<display name="!JOB#STATUS_LESEN#STAT_VOL_DOWN_BETAETIGT" result="1#STAT_VOL_DOWN_BETAETIGT" format="" log_tag="STAT_VOL_DOWN_BETAETIGT" />
<display name="!JOB#STATUS_LESEN#STAT_SEEK_DOWN_BETAETIGT" result="1#STAT_SEEK_DOWN_BETAETIGT" format="" log_tag="STAT_SEEK_DOWN_BETAETIGT" />
</job>
<job id="3" sgbd="acsm85" name="STATUS_GURTKONTAKTE" results="STAT_GKF_WERT">
<display name="!JOB#STATUS_GURTKONTAKTE#STAT_GKF_WERT" result="1#STAT_GKF_WERT" format="" log_tag="STAT_GKF_WERT" />
</job>
<job id="4" sgbd="acsm85" name="STATUS_LESEN" results="STAT_GURTSCHLOSS_FA_GESTECKT">
<display name="!JOB#STATUS_LESEN#STAT_GURTSCHLOSS_FA_GESTECKT" result="1#STAT_GURTSCHLOSS_FA_GESTECKT" format="" log_tag="STAT_GURTSCHLOSS_FA_GESTECKT" />
</job>
</jobs>
</page>
</fragment>
Alles anzeigen
Zu beachten ist hier, dass:
- das Attribut sgbd nicht mehr im übergeordneten Element <jobs> (Plural) steht, sondern in jedem <job> (Singular) selbst.
- wenn mehrere Jobs in einem Steuergerät ausgeführt werden sollen, für jeden Job ein eigenes Element <job> angelgt werden muss, mit der gleichen PRG im Attribut sgbd.
- im Element <job> ein Attribut results (Plural) angelegt wird, indem alle Werte, die aus dem Steuergerät gelesen werden sollen, durch ein Semikolon ";" getrennt aufgelistet werden.
- im Element <display> im Attribut result (Singular) dem Bezeichner ein "1#" vorangestellt wird. Warum, kann ich nicht beantworten.
- in jedem Element <job> ein Attribut id erstellt wird, dass nummeriert wird. Solange irgendeine ID angegeben ist, werden die Werte ausgegeben. Ob sich die Werte gleicher IDs (evtl. in Kombination mit gleichen Jobnamen) ggf. überschreiben hab ich noch nicht feststellen können. Wenn jede ID nur einmal verwendet wird, dann ist man auf der sicheren Seite. Eine Reihenfolge muss man nicht einhalten, nach meiner Erfahrung.
In wiefern beim Motorsteuergarät (in meinem Fall das MSV70) die Attribute args und args_first erforderlich sind weiß ich auch noch nicht genau.
Hierzu noch die Beobachtung, dass Werte mit args="-" (vgl. Messwerte N52.xlsx in der Spalte ARG steht -) scheinbar nicht im Steurergerät implementiert sind und somit nicht ausgelesen werden können. Dann wird einfach kein Wert angezeigt. So ging es mir der (Motor) - Öltemperatur STAT_0x5822_WERT.
Edit 2018-07-09: Thema ID-Vergabe bei Jobs in mehreren Steuergeräten aktualisiert.