Hallo an alle! Die 16-Bit-Integerwerte eines UDP-Headers sollen in eine Zeichenkette geschrieben werden. Das tut es auch recht gut. Nur nach dem zweiten int-Wert hört die Zeichenkette auf. Das der Code recht seltsam anmutem mag, ligt daran, daß ich damit experimentiere. ;-/ Warum wird der Header nicht ganz in den char-String geschrieben? Bzw. wie kann man es eleganter machen? Danke Markus
Ich nochmal! Ich habe herausgefunden, daß der Speicherwert 0x00 als NUL interpretiert wird und dann die Übertragung abbricht. Kann ich davon ausgehen, daß alle Werte richtig gespeichert wurden und ich den Sting auch als UDP-Header verwenden kann? Wie kann ich das Problem beseitigen, daß die Übertagung immer bei 0x00 abbricht? Gruß Markus
Ich habe den Code nicht näher angesehen, aber.. Strings werden in C eben mit \0 (0x0) beendet. Das heißt, alle Stringfunktionen terminieren automatisch sobald eine \0 gefunden wird. Abhilfe: Keine Stringfunktionen zum Lesen des Arrays verwenden. Zum Befüllen des Arrays keine Funktionen der str-klasse verwenden (strcpy, strcat etc.) Reiner
Hallo Reiner! Danke für die Antwort. Welche Funktionen gibt es, die ich zum Zugriff (lesen/schreiben) verwenden kann? Ist es möglich, daß man ein Word-Array oder ein Byte-Array anstelle eines Char-Array's verwendet? Gruß Markus
Ich kenne Deine 'puts'-Funktion zwar nicht, aber sie lässt anmuten, daß sie eine sog. Stringfunktion ist, d.h. beim Lesen einer 0 abbricht! Verwende einfach einen Zähler und 'putc', falls das existiert. In etwa so: [..] while(ctr < UDP_FRM_LEN) putc(UDP_Frame[ctr]); [..]
Hi Oldbug! Ich verstehe was du meinst. Meine Frage ist, ob wie im uC der String aussieht? Dabei kann dein Vorschlag recht hilfreich sein. Werde ihn gleich mal testen. Gruß Markus
Hi OldBug! Ich habe das Problem so gelöst: ... while (i<20) { putchar(UDP_Frame[i]); i++; } ... Und siehe da! Der String existiert im uC so, wie ich ihn haben will;-) Danke!!!
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.