Welcome to our new forum
All users of the legacy CODESYS Forums, please create a new account at account.codesys.com. But make sure to use the same E-Mail address as in the old Forum. Then your posts will be matched. Close

Ist string[16] 16 Byte lang ???

grauerwolf
2005-08-22
2005-08-23
  • grauerwolf - 2005-08-22

    Hallo, ich bin der Neue und Anfänger,

    Bei der Übertragung von Daten via UDP von SPS zu PC übertrage ich ein Array das so aussieht:

    ...
    
    my_string : string[16];
    
    Zahl  : word := 16#FF;
    
    ...
    

    Nun habe ich auf der Gegenseite(PC) nach 16 Bytes das Hexa-FF erwartet. Allerdings vergeblich. Es bleiben immer 2Byte "Luft". Offensichtlich habe ich ein Problem mit der Darstellung von Strings in den Registern, denn bei der UDP-Übertragung werden nur Register übertragen, deren Inhalt dem Übertragungsbaustein Wurscht ist.

    Kann mir jemand mit der Beschreibung der internen Definition von Strings helfen ??

    Vielen Dank

    grauerwolf

     
  • Oberchefe - 2005-08-23

    die Anzahl Bytes = Stringlänge + 1 Byte (da steht die Stringlänge drin), kannst Du mit SizeOf() leicht selbst herausfinden:

    IMG: Stringlänge.gif

     
  • grauerwolf - 2005-08-23

    Hallo Oberchefe,

    das mit der Länge (sizeof) hätte mir auch einfallen müssen. Danke für den Hinweis.

    Aber wo steht denn eigentlich die Länge. Ich kann bei der beschriebenen Telegrammübertragung an einem String[16] als 17es Byte nur ein Hexa-03 feststellen, obwohl 13 Zeichen im String zu erkennen sind.

    Die 03 ist kein ETX manchmal ???

    MfG

    grauerwolf

     
  • grauerwolf - 2005-08-23

    Hallo,

    habe nun selbst des Rätsels Lösung gefunden (mit Codesys-Support).

    Also ein String ist "länge"+1 Bytes lang und wird beendet mit Hexa-00.

    Wenn bei STRING[16] die Länge 17 ist, dann ist bei voller Auslastung des Strings immer noch im 17.Byte die 00 drin. Ist der String kürzer als definiert, dann steht unmittelbar nach dem letzten Zeichen die 0. Die Crux ist aber, das nach dieser 0 noch irgendwelcher alter Ramsch stehen kann. Das hat mich so durcheinander gebracht, wenn man den Inhalt sich Byteweise anschaut.

    Vielleicht hat ein anderer das Problem mal auch ...

    MfG

    grauerwolf

     

Log in to post a comment.