Nachtrag: Hier meine "Steuerdatei", mit der mein Parser die Berichte dekodiert. Ist, glaube ich, selbsterklärend.
Code: Alles auswählen
'Strukturtabelle ReportX
'bytes;type;factor;unit;description;binarymap
'bytes: Anzahl der zu lesenden Bytes
'type: d=dezimal, b=binär, t=Text, a=ASCII, c=Auswahl, ts=Zeitstempel (Sekunden nach dem 6.1.1980 0:00)
'factor: gibt an, um wieviel ggü. der Einheit der Wert zu hoch ist (durch den der Wert zu teilen ist) "5" -> Wert/5=Ergebnis
'descripton:Klarschriftliche Beschreibung
'binarymap: a) zeigt Werte für Binärstellen an, abgetrennt durch | (pipe)
' Wird angegeben, wenn Bit gesetzt ist
' wenn durch Komma getrennt zweiter Wert, dann dieser wenn Bit gelöscht ist
'binarymap: b) bei c(choice): durch | getrennte Wahlmöglichkeiten im Stil HEXBYTE:Erklärung
'Kategorien
'[xxNAME] - bezeichnet Sektionen des Berichts. Nur wenn in "report module mask" das passende Bit XX gesetzt ist, wird
' eine Auswertung vorgenommen
'[replacements] ersetzt nachträglich Texte nach Dekodierung (bspw. bei der Fahrmodusbestimmung)
'
1;d;1;;Nachr.Nr.(msn);
6;b;1;;report module mask;47|46|45|44|43|42|41|40|39|38|37|36|35|UIDS|33|SCUTUMS01,32?|31|30|29|28|27|26|25|24|23|22|21|20|19|18|17|16|15|14|13|12|JNY_STOP|10|9|8|7|GSM_NETWORK|SIG.QU.,5?|4|ANALOGUES|DIGITALS,2?|GNSS,1?|MODPWR,0?
4;ts;;;Report-Zeitpunkt (GMT);
4;b;1;;reason flags;MOTION|30res|bikefall|SCUTUM|gritter|tow_end|tamp_al|Carrier|CANBUS|gpsReaq|decelX|CORNERING MAX|accelX|collisG|unauthdriv|tow_evt|overspeed|powOn|idl_on|idl_end|idl_strt|extBat|lowBat|HEAD|JNY STOP|JNY START|extIO|panic|geofenc|polled|dist_exc|TIMED
2;b;;;status flags;15res|14res|13res|12res|11res|10res|luggComp|GPSjam|RS232err|Immobz|stordRep|storedRep,liveRep|roaming,homenet|GPSinvald|privM|IgnOn,IgnOff
[00MODULE POWER]
1;d;5;V;Modul Vers.spannung;
1;d;1;%;Ladezustand Modulbatterie;
[01GNSS]
4;ts;;;GNSS-Zeit (GMT);
4;d;1000000;;Latitude;
4;d;1000000;;Longitude;
1;d;0.5;km/h;Geschwindigkeit (GNSS);
1;d;0.5;km/h;max. Geschwindigkeit (GPS);
1;d;0.5;°;heading (Richtung);
1;d;0.05;m;altitude (Höhe);
2;d;10;km;Fahrstrecke (aktuelle Fahrt, GPS);
[02DIGITALS]
2;b;;;Dig.IOS1;
2;b;;;Dig.IOS2;
[03ANALOGUES]
2;d;1;;Anlg.ADC1;
2;d;1;;Anlg.ADC2;
[05SIGNAL_QUALITY]
1;b;;;GNSS-Sat./Mobilfunk-Signal;
[06GSM_NETWORK]
2;d;1;;Mobilfunk-Ländercode (MCC);
2;d;1;;Mobilfunk-Betreiber (MNC);
[11JNY_STOP]
3;d;1;km;GPS-Gesamt-km;
2;d;1;h;Betriebsstunden;
[32SCUTUM_S01]
1;d;1;%;SoC (Batterie);
1;d;1;°C;Akku-Temp. max.;
1;d;1;°C;Akku-Temp. min.;
2;d;10;V;Akkuspannung;
2;d;10;A;Akkustrom (HV);
4;t;;;Batterie-ID;
1;b;;;BMS-Warnflags;
1;b;;;BMS-Errorflags;
2;d;10;°C;Motortemperatur;
2;d;10;°C;Invertertemperatur;
1;d;1;km/h;Geschwindigkeit (Tacho);
1;d;1;km;Restreichweite;
4;d;1;??;unb.Zähler, 0-FFFFFFFFF;
4;d;1;Ws;Ladeenergie;
4;d;1;Ws;Rekuperationsenergie;
4;d;1;Ws;Gesamtverbrauch;
1;d;1;°C;Außentemperatur;
1;c;1;;Status;00:aus|01:BMS|02:Zündung|03:v=0km/h|04:v>0km/h|06:ladend;
1;b;1;;unklar (immer 0);
3;d;1;km;Gesamt-km (ODO);
1;b;1;;ECU-Fehl.;
1;b;1;;unklar (ScutumS01,0);
1;b;1;;Schalter;Warnblinker|Bit6|Bit5|Bit4|Fahrlicht|Fernlicht|BlinkerRE|BlinkerLI
1;b;1;;Modus/Seitenständer/Rückwärtsgang;Bit7|Bit6|SportCity|CityEco|S.ständer|Bit2|Bit1|Fahrt,Stand
1;b;1;;unklar;
[34UIDS]
17;a;;;Frame-ID (VIN);
12;t;;;ECU UID L,M,H;
20;t;;;ECU FW Git Hash;
4;t;1;;Batterie-ID;
12;t;;;BMS UID???;
20;t;;;BMS FW Git Hash;
8;t;;;Sigfox BMS ID;
10;a;;;unbekannte ID;
3;t;;;unbekannt (UIDS);
[replacements]
SportCity CityEco=CITY
SportCity=SPORT
CityEco=ECO