String_to_ASCII

Es gibt sicher verschiedene Wege einer davon wäre sich eine Funktion zuschreiben die wie folgt aussieht:

Code:
FUNCTION STRING_TO_ASCII : BYTE
VAR_INPUT
  IN : STRING;
END_VAR
VAR
  pSTRING : POINTER TO STRING;
  pBYTE   : POINTER TO BYTE;
END_VAR
Code:
pSTRING := ADR(IN);
pBYTE := pSTRING;
STRING_TO_ASCII := pBYTE^;
Der passende Aufruf wäre dann:
Code:
myBYTE := STRING_TO_ASCII(TestString);
 
Hallo,
es gibt (zumindestens bei SCL) auch noch die Möglichkeit auf den String eine AT-Sicht auf ein ARRAY_OF_Byte zu erzeugen. Vielleicht liest du dir mal die Hilfe zu dem Befehl durch.
In der Realisierung sähe das dann so aus :
Code:
Deklaration :
myString : STRING [40] ;
a_myString AT myString : Array [-1 ..40] of byte ;
 
Code :
myAscii := a_my_String [12] ; // Einlesen des 12. Zeichens im String

Gruß
LL
 
Hallo,

danke erstmal, ich habe es in TwinCat versucht aber leider kann ich diese Funktion so nicht anwenden (Siemens SCL ist halt nicht gleich TwinCat ST).

gruß bonatus
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Es gibt in TwinCAT in der PC-Lib "TcSystem" die Funktion "F_ToASC", die von einem Zeichen den Ascii-Code rausgibt. Geht aber nur Zeichenweise. Doku siehe http://infosys.beckhoff.com/content/1031/tcplclibsystem/html/TcPlcLibSys_F_ToASC.htm

Ein ganzen String kann man am einfachsten mit dem MEMCPY-Befehl machen :

VAR CONSTANT
CONST_STRING_LENGTH : INT := 9;
END_VAR
VAR
sTestChr : STRING(CONST_STRING_LENGTH);
nTestAsc : ARRAY[0..CONST_STRING_LENGTH] OF BYTE;
nResult : UDINT;
END_VAR


nResult := MEMCPY(ADR(nTestAsc), ADR(sTestChr), CONST_STRING_LENGTH);

Gruß,
DirkS
 
Zurück
Oben