UDP Daten empfangen

so, bis die Buck-Converter kommen habe ich noch ein anderes Problem...

ich möchte den Inhalt der per UDP Übermittelten Nachricht auswerten und je nach Inhalt weitermachen.

Dazu wollte ich eine switch (case) Anweisung verwenden.

das sähe dann so aus:

switch (incomingPacket[len])
case "Fall 1" : Tu dies und jenes;
break;
case "Fall 2" : Tu was anderes;
break;

wenn ich ihm Fall 1 sende, springt er allerdings nicht in den case "Falll 1"
warum ist das so? Vermische ich da irgendwelche Datentypen?

Vermische ich da irgendwelche Datentypen?

Ja. Wie die meisten Anfänger das auch ständig tun :slight_smile:

switch/case geht nur mit Datentypen die zu Integern kompatibel sind.

Bei incomingPacket[len] ist das [len] auch sinnfrei

C Strings (d.h. null-terminierte char Arrays) vergleicht man mit strcmp()

Schau dir die Referenz zu switch case und Beispiele dazu an. Dein Ansatz ist so nicht korreckt.

ah ok, das erklärt einiges :smiley:
ich melde mich, wenns funktioniert (oder scheitert)

Eher so:

int fall = atoi(incomingPacket)
switch (fall)
{
case 33: Tu dies und jenes;
break;

case 45: tu was anderes;
break;

default:
// nix passendes dabeigewesen
}

ok, also du konvertierst das reinkommende Paket in einen Integer...
Aber wie kommst du auf 33 und 45?

Nur so als Beispiel. Ich weiß nicht, was für Daten zu schickst. Ich wollte damit nur darstellen, dass es keine fortlaufenden zahlen sein müssen. Aber eben auch kein Text. Aber je nachdem, wie die Datenpakete aussehen, würde ich das eher mit If Schleifen machen, als wie mit switchCase. In den if Schleifen eben einfach nur darauf abfragen, ob der Text in Datenpaket enthalten ist.

ok, habs mal ausprobiert. So funktioniers schon mal :slight_smile:
Jetzt schicke ich einfach nur "1" oder "2"

Wenn du nur einstellige Ziffern (oder einzelne Buchstaben) hast geht auch switch/case auf incomingPacket[0] und mit '0', '1', etc. Char sind im Prinzip Integer. Für viele Kommandos reicht das schon.

Was ich auch gerne mache ist sowas:
T25.5
Hier eine Temperatur. Dann kann man auf den Buchstaben abfragen um zu wissen was die Daten darstellen und atof() für die Konvertierung. Ein anderer Wert hat einen anderen Buchstaben um ihn zu identifizieren