Go Down

Topic: MSC UDP Port 6004 lauschen und auf Display ausgeben (Read 2108 times) previous topic - next topic

michael_x

Quote
wiso werden die Daten wenn Sie in einen Sting übergebenwerden auf 3 Buchstaben "Gekürzt"?   
char buffer[24] = "ABC";  // hat zwar Platz für 24 Zeichen, aber nach 3 ist ein Endezeichen (die 0 ), und da ist dann Schluss (wo sonst?).

Ohne String zu verwenden kannst du natürlich auf jedes byte in deinem packetBuffer zugreifen.
Wenn dein packetBuffer mittendrin binär-Nullen enthält, ist das eben kein Text, sondern sollte als Puffer von BinärDaten behandelt werden.  ( was sollen denn das für Daten sein? )


agmue

wiso werden die Daten wenn Sie in einen Sting übergebenwerden auf 3 Buchstaben "Gekürzt"?
Weil Strings mittels 0x00 terminiert werden.

Beispiel: Das steht als Bytefolge im Speicher:
Code: [Select]
byte text[] = {0x47, 0x4d, 0x41, 0x00, 0x4d, 0x53, 0x43, 0x00, 0x1e, 0x00, 0x00, 0x00, 0xf0, 0x7f, 0x70, 0x02, 0x7f, 0x01, 0x39, 0x2e, 0x30, 0x30, 0x30, 0x00, 0x32, 0x30, 0x31, 0x2e, 0x31, 0xf7};
Als String interpretiert wird alles ab 0x00 an der vierten Stelle ignoriert, ausgeblendet, unberücksichtigt gelassen.

Folgerung: Ein Feld mit 0x00 Bytes, die nicht als Stringterminierung dienen sollen, würde ich nicht als String behandeln. Die Alternative habe ich in #3 beschrieben.

Hier stehen Deine Daten zur Auswertung bereit:
Code: [Select]
// buffers for receiving and sending data
char packetBuffer[UDP_TX_PACKET_MAX_SIZE];


@michael_x: Hatte Deinen Beitrag übersehen, dann hält doppelt halt besser :)
Wahnsinn und Verstand trennt nur eine dünne Wand. (Daniel Düsentrieb)

1234_BEL

Hallo

Ich wollte mich Bei euch Bedanken, Ohne euch hätte ich das nicht so geschaft !!!
und vor allem nicht verstanden warum das nicht funktionieren konnte. !!


Code: [Select]
  int packetSize = Udp.parsePacket();
    if (packetSize>0) {
    Udp.read(packetBuffer, packetSize);

Serial.println(packetSize);
Serial.println();
  for (byte j = 0; j < packetSize; j++) {
    Serial.print(" ");
    Serial.print(packetBuffer[j]);
 
   
  }
  Serial.println();
  for (byte j = 0; j < packetSize; j++) {
    Serial.print(char(packetBuffer[j]));
      TEXT[j] = packetBuffer[j];
 
  }


das ist was übrig geblieben ist, Die Daten werden in ein Arrey gespeichert und
später über Eine Schleife auf ein Display aufgegeben.

Danke  für Eure Hilfe
Schönes Wochende noch
JOhann

Go Up