TIA Char Array Werte löschen

Zuviel Werbung?
-> Hier kostenlos registrieren
Adhoc bedeutet nur, dass auch Daten im Empfangspuffer eingetragen werden, bevor die angegebene Länge erreicht wurde. Bei TCP ist aber nicht gewährleistet, dass auch wenn dein Partner die immer 10 Bytes schickt, die dann auch immer bei deinem RECV als 10 Byte ankommen. Das kann dann eben auch mal 2 Bytes und dann beim nächsten Aufruf 8 Bytes sein. Und damit muss dein Programm umgehen können, nicht mehr und auch nicht weniger. Wenn du den Adhoc Modus nicht verwendest und du gibst 10 Zeichen bei RECV an, dann speichert der Baustein die Daten z.B. die 2 Bytes zwischen, und meldet dir erst, dass neue Daten eingetroffen sind wenn auch die letzten 8 eingetroffen sind.

Habe jetzt mal Adhoc auf false gesetzt und beim Parameter Len den Wert 10 eingestellt. Wie kann es dann sein, dass sich trotzdem im String nur 9 Zeichen befinden und nicht 10 ?
1649936053519.png
 
Hast du nach der Änderung einmal die Verbindung komplett zurückgesetzt, damit der interne Puffer auf jeden Fall geleert wurde? Und ich weiß nicht ob es zur Diagnose sinnvoll ist, sich die weiterverarbeiteten Daten anzusehen, denn die Konvertierungsfunktion von Char Array zu String hat ja auch noch mal ein paar Besonderheiten.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Wenn dein Partner die z.B. 11 Zeichen schickt und alles nochmal mit einer $00 abschließt, dann könnte das auch zu solchen Effekten führen. Dann liest du 10 Bytes ein, 1 Byte verbleibt noch im Puffer. Bei den nächsten 11 Bytes die kommen liest du 10 aus, 2 bleiben im Puffer usw. Dann verschiebt sich das immer weiter.
 
Zurück
Oben