Bitte ändert euer Passwort!
Im März 2026 wurde das Forum gehackt. Dabei hatten die Angreifer Zugriff auf die Datenbank und somit Zugriff auf eure Passwörter. Auch wenn das Forum kein Passwort im Klartext speichert, können die Angreifer eure Passwörter knacken. Bitte ändert daher dringend euer Passwort für das Forum. Solltet ihr das gleiche Passwort auch an anderer Stelle verwenden, ändert es bitte unbedingt an allen Stellen!
Arduino Library für die Dekodierung von EX-Paketen
- Eckehard
- Offline
- Senior Mitglied
-
- Beiträge: 65
- Thanks: 6
Re: Update zur Sender-Decoder-Library
05 Jan. 2018 20:38 - 05 Jan. 2018 20:41wie im Video zu sehen stimmen die Anzeigen für Flieskomma Zahlen nicht....
Ok, konkret ....
Empfangen habe ich (vor dem Parsen)
<GPS 3276a409 2 Longitude 11.67543>
Beim Parsen mit :
int n = sscanf(buffer,"<%s %lx %d %s %d>", &sensor, &serial, &id, &label, &value);
wird daraus:
SENSOR=GPS SERIAL=3276A409 ID=2 LABEL=Longitude VALUE=11 sscanf=5
Was "falsch" ist: aus 11.67543 wird 11
Hat jemand eine Idee wie ich den format specifier für sscanf setzen muss damit ich Fliesskommazahlen auch geparst bekomme?
Mein Versuch mit
int n = sscanf(buffer,"<%s %lx %d %s %.2f>", &sensor, &serial, &id, &label, &value);
liefert leider :
SENSOR=GPS SERIAL=3276A409 ID=2 LABEL=Longitude VALUE=0.00 sscanf=4
sscanf=4 bedeutet dass sscanf keine 5 Werte mehr erkannt hat, sondern nur 4
1000 Dank im Vorraus für einen Tipp!
Eckehard
Bitte Anmelden oder Registrieren um der Konversation beizutreten.
- Sepp62
- Autor
- Offline
- Elite Mitglied
-
- Beiträge: 307
- Thanks: 154
Re: Update zur Sender-Decoder-Library
05 Jan. 2018 22:16die sscanf-Funktion in Arduino "stdio.h" scheint nicht richtig zu funktionieren. Es gibt dazu einiges an Literatur im Netz.
Als Ersatz kannst Du probieren:
1. Den Float-Wert mit sscanf und %s als String einlesen und dann mit atof( stringWert ) in float konvertieren.
2. Den ganzen String gleich mit strtok() auseinander nehmen und die numerischen Werte mit atoi() und atof() umwandeln.
VG Bernd
Bitte Anmelden oder Registrieren um der Konversation beizutreten.
- Sepp62
- Autor
- Offline
- Elite Mitglied
-
- Beiträge: 307
- Thanks: 154
Re: Update zur Sender-Decoder-Library
06 Jan. 2018 08:43Bitte Anmelden oder Registrieren um der Konversation beizutreten.
- Eckehard
- Offline
- Senior Mitglied
-
- Beiträge: 65
- Thanks: 6
Re: Update zur Sender-Decoder-Library
06 Jan. 2018 12:12 - 06 Jan. 2018 12:12ersteinmal vielen Dank für Deine Mühen mir hier zu helfen!
Der erste Tipp war einfach umzusetzen, das Ergebnis lässt sich sehen..:
Jetzt muss ich noch die einfache Koordinaten Umrechnung machen, damit die GPS Koordinaten wie im Jeti Sender angezeigt werden, "Grad" "Minuten" statt "Dezimalgrad"...
Der Micro läuft sogar mit eienr Lipo Zelle, jedoch nicht zuverlässing unter 3,9V... Ich werde also jetzt auf ProMini3,3V umbauen...
Aber vorher gehts raus zum Fliegen, hier ist Bombenwetter....
Grüße und Danke!
Eckehard
Bitte Anmelden oder Registrieren um der Konversation beizutreten.
- Eckehard
- Offline
- Senior Mitglied
-
- Beiträge: 65
- Thanks: 6
Re: Update zur Sender-Decoder-Library
08 Jan. 2018 21:01 - 08 Jan. 2018 21:21heute habe ich nur zwei Kleinigkeiten geändert/getestet:
1. Eine kleine Änderung am Dekoder Sketch sendet nun auch die Einheit des Sensors mit
2. Der schon lange noch ausstehende Test mit einem "handelsüblichen" Sensor, der nicht die TelemetryLibrary (JetiExSensor_V1.0.5.zip, Bernd/Sepp62) verwendet konnte ich heute endlich durchführen.
Nun bekomme ich auch den EX Datenstrom eines UNISENS-E (SM-Modellbaui) dekodiert, und letztendlich angezeigt....
Dabei ist folgendes aufgefallen....
...
PARSING: SENSOR=UniS-E SERIAL=5CC1A302 ID=1 LABEL=Spannung UNIT=V VALUE=11.25 sscanf=6
PARSING: SENSOR=UniS-E SERIAL=5CC1A302 ID=2 LABEL=Strom UNIT=A VALUE=-0.22 sscanf=6
PARSING: SENSOR=UniS-E SERIAL=5CC1A302 ID=5 LABEL=Hoehe UNIT=m VALUE=0.00 sscanf=6
PARSING: SENSOR=UniS-E SERIAL=5CC1A302 ID=1 LABEL=Spannung UNIT=V VALUE=11.25 sscanf=6
PARSING: SENSOR=UniS-E SERIAL=5CC1A302 ID=2 LABEL=Strom UNIT=A VALUE=-0.22 sscanf=6
PARSING: SENSOR=UniS-E SERIAL=5CC1A302 ID=3 LABEL=Kapazitaet UNIT=mAh VALUE=-25.00 sscanf=6
PARSING: SENSOR=UniS-E SERIAL=5CC1A302 ID=5 LABEL=Hoehe UNIT=m VALUE=0.00 sscanf=6
PARSING: SENSOR=UniS-E SERIAL=5CC1A302 ID=7 LABEL=Drehzahl UNIT=rpm VALUE=0.00 sscanf=6
PARSING: SENSOR=UniS-E SERIAL=5CC1A302 ID=7 LABEL=Drehzahl UNIT=rpm VALUE=0.00 sscanf=6
PARSING: SENSOR=UniS-E SERIAL=5CC1A302 ID=1 LABEL=Spannung UNIT=V VALUE=11.25 sscanf=6
PARSING: SENSOR=UniS-E SERIAL=5CC1A302 ID=2 LABEL=Strom UNIT=A VALUE=-0.22 sscanf=6
PARSING: SENSOR=UniS-E SERIAL=5CC1A302 ID=3 LABEL=Kapazitaet UNIT=mAh VALUE=-25.00 sscanf=6
PARSING: SENSOR=UniS-E SERIAL=5CC1A302 ID=7 LABEL=Drehzahl UNIT=rpm VALUE=0.00 sscanf=6
PARSING: SENSOR=UniS-E SERIAL=5CC1A302 ID=1 LABEL=Spannung UNIT=V VALUE=11.25 sscanf=6
PARSING: SENSOR=UniS-E SERIAL=5CC1A302 ID=2 LABEL=Strom UNIT=A VALUE=-0.22 sscanf=6
PARSING: SENSOR=UniS-E SERIAL=5CC1A302 ID=5 LABEL=Hoehe UNIT=m VALUE=0.00 sscanf=6
PARSING: SENSOR=UniS-E SERIAL=5CC1A302 ID=7 LABEL=Drehzahl UNIT=rpm VALUE=0.00 sscanf=6
...
Dabei fällt auf, daß die Reihenfolge der SensorPakete/IDs, siehe Spalte "ID=" im obigen Code:
- Lücken enthhalten (können, je nachdem im Sensor aktiviert ist)
- Die Reihenfolge nicht immer aufsteigend / regelmäßig ist
Wo Licht, da auch Schatten.....:
Da muss ich mir wohl etwas überlegen, wo noch Speicher zu sparen ist....
Globale Variablen verwenden 2587 Bytes (101%) des dynamischen Speichers, -27 Bytes für lokale Variablen verbleiben. Das Maximum sind 2560 Bytes.
Nicht genug Arbeitsspeicher; unter www.arduino.cc/en/Guide/Troubleshooting#size finden sich Hinweise, um die Größe zu verringern.
Fehler beim Kompilieren für das Board Arduino/Genuino Micro.
...
Im Moment reduziere ich erstmal die maximale Anzahl der Sensor Werte auf 20 (Ziel war den maximalen Wert 32 zu verwenden)
Oder ich spendier der DatenBrille auch einen Teensy.....
Aber wenn auch nur kleine Fortschritte... es macht Spaß!
Grüße
Eckehard
Bitte Anmelden oder Registrieren um der Konversation beizutreten.
- Sepp62
- Autor
- Offline
- Elite Mitglied
-
- Beiträge: 307
- Thanks: 154
Re: Update zur Sender-Decoder-Library
09 Jan. 2018 14:21ich möchte nicht schulmeisterlich in Dein Konzept reinreden, daher nur ein paar Hinweise:
- Ich vermute, Du speicherst ein Abbild aller Sensoren in Deinem Empfänger-Arduino. Das kostet natürlich eine Menge Speicher.
- Die Frage ist, ob das sein muss. Du wirst sicher nicht alle Werte zu einer zeit in Deiner Brille anzeigen.
- D.h. Du könntest Dir irgendwo merken, welche Werte Du gerade anzeigen willst (Liste mit serialID/Id). Das werden wohl nicht mehr als 2-5 Werte sein. Du kannst Dir auch den zuletzt gelieferten Wert und die zugehörigen Einheiten in Deiner Liste merken, das kostet nicht viel.
- Meldet die Library einen neuen Wert, den Du anzeigen möchtest, dann schreibst Du den Messwert in Deine Liste und aktualisierst das Display mit allen Werten aus Deiner Liste.
- Wird der Cursor-Knopf gedrückt, baust Du die besagte Liste neu auf.
Alternativ nimmst Du einen Teensy
VG Bernd
Bitte Anmelden oder Registrieren um der Konversation beizutreten.