Zuviel Werbung? - > Hier kostenlos beim SPS-Forum registrieren

Seite 1 von 2 12 LetzteLetzte
Ergebnis 1 bis 10 von 11

Thema: [SCL] String in Char umwandeln

  1. #1
    Registriert seit
    10.08.2010
    Beiträge
    770
    Danke
    1
    Erhielt 14 Danke für 13 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo
    wie kann ich in SCL aus einen String[11] einen Array of Char[0..11] erzeugen?

    Habe folgendes

    VAR_OUTPUT

    A_CHAR:ARRAY [0..11]OF CHAR;


    END_VAR


    VAR
    TEXT:STRING[11];
    SPEICHER:ARRAY[0..11]OF STRING;


    END_VAR


    Beginn

    FOR i := 0 TO 11 BY +1 DO
    SPEICHER[i]:=TEXT[i]; ????? Hier stimmt was nicht
    ;
    END_FOR;




    FOR i2 := 0 TO 11 BY +1 DO
    A_CHAR[i2]:= STRING_TO_CHAR(SPEICHER[i2]);
    ;
    END_FOR;
    Geändert von rostiger Nagel (08.11.2012 um 18:53 Uhr)
    Zitieren Zitieren [SCL] String in Char umwandeln  

  2. #2
    Registriert seit
    27.05.2004
    Ort
    Thüringen/Berlin
    Beiträge
    12.224
    Danke
    533
    Erhielt 2.698 Danke für 1.950 Beiträge

    Standard

    Speicher hast du als Array of String definiert, das heißt, das in Speicher 12 Strings á 255 Byte Länge angelegt sind.
    Wenn du da etwas zuweisen willst, dann sollte es auch ein String sein.

    Der zweite Teil, mit dem Wandeln String_to_Char sieht ok aus. --> Korrektur, ne, das paßt ja auch nicht

    Muß noch mal korrigieren, der zweite Teil greift ja auchin Speicher, da sollte statt Speicher[i2] Text[i2] stehen.
    Geändert von Ralle (08.11.2012 um 10:08 Uhr)
    Gruß
    Ralle

    ... there\'re 10 kinds of people ... those who understand binaries and those who don\'t …
    and the third kinds of people … those who love TIA-Portal

  3. #3
    Registriert seit
    22.03.2007
    Ort
    Detmold (im Lipperland)
    Beiträge
    11.728
    Danke
    398
    Erhielt 2.406 Danke für 2.002 Beiträge

    Standard

    Hallo,
    ich würde hier so vorgehen :
    Auf den Quellstring eine AT-Sicht bilden, die den String-Bestandteil, der dich interessiert, als Array_of_Char darstellt und diesen Datenteil (der AT-Sicht) dann auf den Ausgabeteil kopieren / übertragen.

    Gruß
    Larry

    Nachsatz:
    Ich kann mit deinem Code nicht so schrecklich viel anfangen sonst hätte ich dir da ein Beispiel zu gepostet ...
    Was möchtest du nach A_Char ausgeben ?

  4. #4
    Registriert seit
    27.05.2004
    Ort
    Thüringen/Berlin
    Beiträge
    12.224
    Danke
    533
    Erhielt 2.698 Danke für 1.950 Beiträge

    Standard

    AT-Ansicht wire Larry sagte, wäre dann in etwa so (für einen 30-Zeichen-String):

    Temp_String1: STRING[30];
    atTemp_String1 AT Temp_String1: ARRAY[0..31] OF BYTE; /Byte verwenden und evt. Typ wandeln oder gleich Char, Byte 0 und 1 sind max.Länge und tatsächliche Länge des String!
    Gruß
    Ralle

    ... there\'re 10 kinds of people ... those who understand binaries and those who don\'t …
    and the third kinds of people … those who love TIA-Portal

  5. #5
    Registriert seit
    10.08.2010
    Beiträge
    770
    Danke
    1
    Erhielt 14 Danke für 13 Beiträge

    Standard

    Hallo
    Habe noch mal eine grundsätzliche Frage.

    Wenn mann Daten über TCP überträgt verwendet man dann CHAR oder kann mann einen kompletten String übertragen ?

    Habe mal versucht einen kompletten String zu senden. Dieser kam auch am Arduino an, allerdings wurde auch die ersten 2 Bytes Länge/Große angezeigt.
    Habe ich beim Übertrage die ersten 2 Bytes nicht mitgesendet, kam der Text richtig an.

    Ein weitere frage. Am Baustein TCP Senden muss man die Sende-daten ansetzen und die Größe LEN. Ich habe einen String[16] der Bereich geht von DBX 0.0 - DBX 18.0 . Muss ich jetzt bei LEN 16 oder 18 ansetzen ?

  6. #6
    Registriert seit
    27.05.2004
    Ort
    Thüringen/Berlin
    Beiträge
    12.224
    Danke
    533
    Erhielt 2.698 Danke für 1.950 Beiträge

    Standard

    Bei S7 besteht ein String aus den 2 führenden Byte, dann kommt der eigentliche String. Davon wissen natürlich andere Empfänger nichts. Entweder du sendest den String als eine einfache Folge von Byte/Char (dann 16 Byte LEN) oder du sendest den S7-String und entfernst im Empfänger die beiden führenden Byte (dann 18 Byte LEN). Es ginge auch noch etwas anderes.
    Beim TCP-Sendebaustein gibst du ja wahrscheinlich einen Any als Sendefach an. Wenn du nun einen String[16] in deinem Sende-DB anlegst, ab DBB0 z.Bsp., dann könntest du am Sende-FB für den Any diesen ab DBB2 angeben, also z.Bsp. P#DB100.DBX2.0 Byte 16. Bei LEN dann natürlich 16. Das würde ich einmal testen. Nochmal, du schreibst einen String in dein Sendefach, gibst aber beim Any den Beginn des Sendefachs 2 Byte später an.
    Gruß
    Ralle

    ... there\'re 10 kinds of people ... those who understand binaries and those who don\'t …
    and the third kinds of people … those who love TIA-Portal

  7. #7
    Registriert seit
    10.08.2010
    Beiträge
    770
    Danke
    1
    Erhielt 14 Danke für 13 Beiträge

    Standard

    Hallo
    Senden klappt wenn ich die ersten 2 Bytes weg lase. Aber beim empfange habe ich eine art laufschrieft. Ich habe als empfangsvariable aich einen String[16]. Denke mal das ich nicht die infromationen erhalte wie lange der String ist.
    Versuche es mal mit einen cHAR

  8. #8
    Registriert seit
    10.08.2010
    Beiträge
    770
    Danke
    1
    Erhielt 14 Danke für 13 Beiträge

    Standard

    Was meist du genau mit AT sicht . ? Kannst du mr ein Beispiel zeigen ?

    Zitat Zitat von Larry Laffer Beitrag anzeigen
    Hallo,
    ich würde hier so vorgehen :
    Auf den Quellstring eine AT-Sicht bilden, die den String-Bestandteil, der dich interessiert, als Array_of_Char darstellt und diesen Datenteil (der AT-Sicht) dann auf den Ausgabeteil kopieren / übertragen.

    Gruß
    Larry

    Nachsatz:
    Ich kann mit deinem Code nicht so schrecklich viel anfangen sonst hätte ich dir da ein Beispiel zu gepostet ...
    Was möchtest du nach A_Char ausgeben ?

  9. #9
    Registriert seit
    22.03.2007
    Ort
    Detmold (im Lipperland)
    Beiträge
    11.728
    Danke
    398
    Erhielt 2.406 Danke für 2.002 Beiträge

    Standard

    Ja ... siehe Beitrag #4 in diesem Thread von Ralle ...
    Das läßt sich natürlich auch beliebig anders varieren ...

    Gruß
    Larry

  10. #10
    Registriert seit
    10.08.2010
    Beiträge
    770
    Danke
    1
    Erhielt 14 Danke für 13 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo das hat ja schon mal super geklappt.
    Habe aus meinen String[16] einen char gemacht den ich über TCP sende. Das Echo ist auch ein Char

    Jetzt muss ich nur noch aus den empfangenen Array [0..15] of Char einen String[16] machen ?

Ähnliche Themen

  1. INT oder DINT in CHAR/BYTE Umwandeln
    Von MAVI im Forum Simatic
    Antworten: 41
    Letzter Beitrag: 29.04.2016, 12:51
  2. Antworten: 5
    Letzter Beitrag: 10.12.2011, 13:58
  3. hilfe mit char in string umwandeln sps s7
    Von ibric70 im Forum Simatic
    Antworten: 4
    Letzter Beitrag: 29.11.2011, 21:34
  4. Char umwandeln in Integer
    Von viperserver im Forum Simatic
    Antworten: 47
    Letzter Beitrag: 07.03.2011, 15:23
  5. Array of Char umwandeln?
    Von thomzur im Forum Simatic
    Antworten: 3
    Letzter Beitrag: 25.02.2008, 17:06

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •