ASCII Zeichenkette in HEX oder Real Zahl konvertieren

fmitsup

Level-1
Beiträge
1
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo,

sammle gerade erste Erfahrungen in der Programmierung S7-1200 (1212C V3.0) und RS232 Schnittstelle in einer konkreten Aufgabenstellung.

Über die RS232 Schnittstelle lese ich aus einem Messsystem Daten in die Steuerung zur weiteren Verarbeitung ein.
Den Datenstring sehe ich im Eingangspuffer als ASCII Zeichen, diese aber nur mit dem vollen ASCII Zeichenumfang.

Habe bisher vergeblich nach einer Lösung gesucht, z.B. î½$R in 4 Byte Hex oder Gleitpunktzahl zu konvertieren.

Gibt es dafür einen Lösungsansatz? Das Messsystem gibt aktuell die Werte halt nur als ein ASCII-Zeichen je Byte in diesem Format aus.

Bin für jede Hilfe dankbar.
 
habe eine ähnliche aufgabe...

ist dein puffer ein array oder ein string? bei strings gibt es im tia portal funktionen, die die umrechnung für einen übernehmen.

ich habe mir aber etwas eigenes geschrieben, mit hilfe aus dem forum :)

#Flaeche_ZwSp := 0;

FOR #Bytes := 1 TO 6 BY 1 DO // Anzahl der Durchläufe
IF #ARRAY_Flaeche[#Bytes] >= b#16#30 // Abfrage, ob das ASCII-Zeichen eine Zahl ist
THEN
IF #ARRAY_Flaeche[#Bytes] <= B#16#39
THEN
CASE #Bytes OF
1: #Flaeche_ZwSp := #Flaeche_ZwSp + (BYTE_TO_DINT((#ARRAY_Flaeche[#Bytes]-48 )*100000);
2: #Flaeche_ZwSp := #Flaeche_ZwSp + (BYTE_TO_DINT((#ARRAY_Flaeche[#Bytes]-48 )*10000);
3: #Flaeche_ZwSp := #Flaeche_ZwSp + (BYTE_TO_DINT((#ARRAY_Flaeche[#Bytes]-48 )*1000);
4: #Flaeche_ZwSp := #Flaeche_ZwSp + (BYTE_TO_DINT((#ARRAY_Flaeche[#Bytes]-48 )*100);
5: #Flaeche_ZwSp := #Flaeche_ZwSp + (BYTE_TO_DINT((#ARRAY_Flaeche[#Bytes]-48 )*10);
6: #Flaeche_ZwSp := #Flaeche_ZwSp + (BYTE_TO_DINT((#ARRAY_Flaeche[#Bytes]-48 )*1);
END_CASE;
END_IF;
END_IF;
END_FOR;

#INT_Flaeche := #Flaeche_ZwSp; // Übertragung des DINT-Wertes der Fläche in den Datenbereich

in meinem thread ist noch von einem anderen user ein lösungsansatz der dynamisch ist. meine lösung ist statisch, da die länge des arrays immer konstant ist...

grüsse
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo,

sammle gerade erste Erfahrungen in der Programmierung S7-1200 (1212C V3.0) und RS232 Schnittstelle in einer konkreten Aufgabenstellung.

Über die RS232 Schnittstelle lese ich aus einem Messsystem Daten in die Steuerung zur weiteren Verarbeitung ein.
Den Datenstring sehe ich im Eingangspuffer als ASCII Zeichen, diese aber nur mit dem vollen ASCII Zeichenumfang.

Habe bisher vergeblich nach einer Lösung gesucht, z.B. î½$R in 4 Byte Hex oder Gleitpunktzahl zu konvertieren.

Gibt es dafür einen Lösungsansatz? Das Messsystem gibt aktuell die Werte halt nur als ein ASCII-Zeichen je Byte in diesem Format aus.

Bin für jede Hilfe dankbar.

Verstehe die Frage nicht!
Was liefert denn das Meßsystem für Werte, also welches Format?
 
Zurück
Oben