ich bin gerade dabei mich in die UDP Übertragung einzuarbeiten.
Dafür hab ich mich hier und da schon eingelesen und vor allem auf fipsok.de die Beispiele nachvollzogen.
Ich schicke vorweg ich bin nicht der Mega C Programmierer. Habe mir bis jetzt das Meiste durch lesen oder probieren selbst beigebracht.
Die Beispiel im TAB Esp8266 UDP Spezial klappen eigentlich alle!
Jetzt steh ich aber für mich vor einem Problem
Der Sender sendet zum Beispiel durch diese Zeile: Udp.printf("Temperatur: %.2f°C", tempC);
die Funktion deren Inhalt der „Name“ und der eigentliche Temperatur wert ist.
Der Empfänger gibt in dem Beispiel aber lediglich den ganzen packetBuffer seriell aus.
Nun meine Frage:
Wie kann ich die Funktion
Udp.printf("Temperatur: %.2f°C", tempC);
bzw. den packetBuffer auf der Empfängerseite wieder zerlegen um sie weiter zu verarbeiten?
Möchte sozusagen wissen was für ein Wert zum Beispiel Temperatur, Luftfeuchte,…
gesendet wurde und die dazugehörige Zahl dann weiter verarbeiten um irgendetwas zu steuern.
Wenn du mehrere Zahlen senden möchtest dann macht es Sinn die gaaaanz anders zusammenzusetzen
Wenn es denn wichtig ist eine Betitelung der Zahl zu haben
Temperatur:12,34;Feuchte:56,78%;
In diesem Aufbau gibt es jetzt charakteristische Zeichen die die Einzelteile voneinander trennen:
Ein Zeichen nach dem Doppelpunkt Zahlenwert beginnt
Strichpunkt da ist die Zahl zu Ende und die Nächste Betitelung beginnt
Ein Zeichen nach dem Doppelpunkt Zahlenwert beginnt
Strichpunkt da ist die Zahl zu Ende
Man scannt also die Zeichenkette auf den Doppelpunkt auf Strichpunkte
scanf macht das
Poste mal wie deine zusammengesetzten Daten aussehen
Einfacher geht es wenn man statt "Temperatur:" nur "T" schreibt. Ein Buchstabe. Dann kann man einfach switch/case verwenden. Und hat auch sofort den Anfang der Zahl um sie zu Konvertieren.
ich hab bis jetzt nur die Beispiele von Fips...
Ich hab eben einen Temepraturwert eines DS18B20 und ein Lichtmesser in Lux (anderen Sensor hatte ich nicht).
Beides sind float Zahlen.
Das mit : und ; hab ich verstanden.
Ich will nur irgendwie auseinander halten was ich schicke...
Ich müsste die Werte auch nicht einmal zusammen schicken...
Aber auch wenn ich die nacheinander schicke...
Woher weiß der Empfänger was ich geschickt habe?
Wenn du ein Telegram mit beiden Zahlen sendest weiß er es aus der Reihenfolge. Man braucht aber trotzdem ein Trennzeichen oder konstante Länge.
Wenn du zwei Telegramme sendest dann könntest du als erstes Zeichen "T" wie Temperatur senden oder "L" wie Lux.
Dann untersucht man das erste Zeichen.
Wenn du das jetzt noch näher auseinander klamüsert haben willst dann musst du mal deinen code als code-section posten
You can post code by using this method that adds the code-tags
There is an automatic function for doing this in the Arduino-IDE
just three steps
press Ctrl-T for autoformatting your code
do a rightclick with the mouse and choose "copy for forum"