Seite 1 von 1

String in Zahl umwandeln

Verfasst: Dienstag 25. Mai 2021, 21:03
von erich
Hallo zusammen,

ich möchte mit ReadLine aus einer Datei einen String einlesen (funktioniert) und diesen in eine Zahl umwandeln, die dann über ein A/D-Wandler binäre Ausgänge steuern soll. Mein Problem: kann ich das mit dem Baustein $VAlue umsetzen? Ich habe dahinter dann ein numerisches Display angeschlossen bzw. direkt den A/D-Wandler, bekomme aber keine Anzeige eines Wertes. Mein Denkfehler? Vielleicht hat jemand einen Tipp für mich.

Danke & Gruß

Thorsten
RD.jpg
RD.jpg (13.95 KiB) 2704 mal betrachtet

Re: String in Zahl umwandeln

Verfasst: Mittwoch 26. Mai 2021, 09:55
von Mike D
Moin,
wie sieht der String denn aus?
Liegt er auch dauerhaft an $LN an?

Mike

Re: String in Zahl umwandeln

Verfasst: Mittwoch 26. Mai 2021, 21:46
von erich
Hallo Mike,

so sieht der String zum Beispiel aus. Im Texteditor die Datei, die über ReadLine eingelesen wird. Mit dem Taster kann ich die Anzeige aktualisieren, wenn ich den Inhalt der Datei vorher verändert habe. Der String wird im $Display dauerhaft angezeigt. Ob er auch dauerhaft am Eingang von $Value anliegt, kann ich darüber hinaus nicht beurteilen (wie ginge das ?). Ich denke aber schon, dass der String dort dauerhaft anliegt.
Ich verstehe das doch richtig: $Value -> Eingang "$" ist ein String -> Umwandlung -> Ausgang "V" Ausgabe einer ganzen Zahl (dezimal)? Diese Zahl müsste man doch irgendwie anzeigen können. Das ist mein Problem.

Re: String in Zahl umwandeln

Verfasst: Mittwoch 26. Mai 2021, 23:24
von IKT
String zu numerischem Wert wandeln, funktioniert nur korrekt, wenn der String (am Anfang, zumindest) einer Zahl entspricht.
Z.B. "12345.6789" (float), "87654" (integer) oder ähnlich ... sonst: typischerweise = 0 = Fehler.

Re: String in Zahl umwandeln

Verfasst: Donnerstag 27. Mai 2021, 08:34
von Mike D
wie IKT schon schrieb, es muss auch eine Zahl im String enthalten sein.
Die erste im String vorkommende Zahl wird umgewandelt und als Wert ausgegeben.
Sind mehrere Zahlen enthalten und durch Buchstaben oder ; getrennt wird nur die erste genommen.
Der Punkt wird auch als Komma interpretiert.
Vorsicht, das Leerzeichen als Trennung funktioniert nicht! Das Leerzeichen wird ingoriert. Und wenn mehrere Kommazahlen nur durch Leerzeichen getrennt stehen wird das Ergebniss strange.
Das Ganze funktioniert übrigens auch ohne den Baustein $VAL, ein Stringausgang auf einen Numerischen Eingang geschaltet wird in PL genauso umgewandelt.

$ASCII würde den ASCII-Wert des ersten Zeichens im String ausgeben.

Mike

Re: String in Zahl umwandeln

Verfasst: Donnerstag 27. Mai 2021, 08:56
von Mike D
Ob er auch dauerhaft am Eingang von $Value anliegt, kann ich darüber hinaus nicht beurteilen (wie ginge das ?).
Wenn man wärend die Simulation läuft mit dem Lupencursor auf eine Leitung oder einen Bausteinanschluss geht, wird neben dem Cursor der aktuelle Wert angezeigt. Man kann also wie mit eine Messspitze in der laufenden Schaltung Werte prüfen.

Re: String in Zahl umwandeln

Verfasst: Donnerstag 27. Mai 2021, 13:57
von abacom
Kurz:
$VAL('Hallo') = 0
$VAL('123') = 123
$VAL(''%1111'') = 15
$VAL(''$FF') = 255
usw.

Vielleicht hilft ein Blick auf die Komponente $Bytes weiter? Ganz klar ist mir die Fragestellung hier nicht.
$Bytes('ABCD') => 65 66 67 68

Re: String in Zahl umwandeln

Verfasst: Donnerstag 27. Mai 2021, 21:25
von erich
... Danke an alle für die Antworten und Tipps. Mein Fehler waren die fehlenden Anführungszeichen in der Datei, die eingelesen wird. die Umsetzung funktioniert jetzt. Neu war mir auch, dass zumindest das erste Zeichen eine Zahl sein muss. Das kommt bei der Hilfe zu $VAL nicht so ganz rüber: "$VAL wandelt die Zeichenkette am Eingang $ in einen numerischen Wert, der am Ausgang V ausgegeben wird." Zeichenkette klingt nach beliebigen Buchstaben. Das mit der Lupe ist auch ein cooler Tipp, hat mir auch beim Testen geholfen.

@ Abacom Support: Die Fragestellung zielt darauf ab, Daten aus einem anderen Programm zu übernehmen, das möchte ich ganz einfach über über die Datei machen. Die Häufigkeit der Datenübergabe ist eher selten, daher nicht zeitkritisch.

Also, nochmal danke und beste Grüße

Thorsten

Re: String in Zahl umwandeln

Verfasst: Dienstag 1. Juni 2021, 10:05
von Mike D
Es sind weder Anführungszeichen nötig noch muss als erstes eine Zahl stehen.
abacom hat die ´ in seiner Formeldarstellung nur benutzt, um zu zeigen, dass der Eingabeparameter ein String ist.
Val nimmt die erste Zahl im String, ganz egal was davor steht.
Ist keine Zahl im String gibt Val 0 aus. Das kann man leider nicht von einer tatsächlichen null im String unterscheiden.

Mike