Anfängerfrage zur Übergabe von Daten an Funktion.

Moin,

kann mir mal jemand von euch Profis helfen?

Ich möchte an eine Funktion Werte/Strings übergeben. Soll so was wie Serial.println über udp werden Mit Strings habe ich das schon geschafft:

...
   UDP_Debug("Dies ist ein Text");
...

void  UDP_Debug(const char *udpstring){
   Udp.beginPacket(broadcastIp, broadcastPort);
      Udp.println(udpstring);
   Udp.endPacket();  
}

Aber kann man das auch so universal definieren, dass nicht nur Texte, sondern auch Variablen (also deren Werte) übergeben werden?

Ja, das geht. Du musst Deine Klasse von Print ableiten. Damit hast Du alle Funktionalitäten von Print/Stream drin. Für eine Debug-Ausgabe über Telnet am ESP8266 habe ich das hier mal gemacht.

Der Weg ist der gleiche.

Gruß Tommy

Ja, ich brauchs auch für den ESP8266.

Das wärs natürlich, wenn ich alles was serial.print ist auf udp umleiten könnte.
Allerdings muss ich deinen ganzen code mal unters Kopfkissen legen. Das ist für nen Gelegenheitsprogrammierer schwere Kost…

Debug über telnet? Was wäre hier der Vorteil?
Mein Ziel ist einfach, einen entfernten ESP während der Entwicklungsphase so zu debuggen, als hinge er am seriellen Kabel.

Mein Ziel ist einfach, einen entfernten ESP während der Entwicklungsphase so zu debuggen, als hinge er am seriellen Kabel.

Wenn du dich nur von UDP lösen könntest... Dann würdest du feststellen, dass ESP TCP Clients und der Server das Stream Interface, und damit auch Print implementieren. Es ist also schon fertig.

Debug über telnet? Was wäre hier der Vorteil?

Es tut was du willst.

OK, schau ich mir mal an. Wollte halt nur auf UDP bleiben, da das weniger traffic wie TCP verursacht. Mir hätte ein einfacher "shout and forget" broadcast gereicht.

Du kannst auf die gleiche Art auch UDP einbinden, wenn Du das unbedingt willst. Das ist auch kein Problem.

Gruß Tommy