String in Zahl umwandeln

Antworten
erich
Beiträge: 3
Registriert: Montag 24. Mai 2021, 14:25

String in Zahl umwandeln

Beitrag von erich » Dienstag 25. Mai 2021, 21:03

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) 2581 mal betrachtet

Mike D
Beiträge: 528
Registriert: Dienstag 14. Oktober 2008, 14:48
Wohnort: Elbe- Weser-Dreieck

Re: String in Zahl umwandeln

Beitrag von Mike D » Mittwoch 26. Mai 2021, 09:55

Moin,
wie sieht der String denn aus?
Liegt er auch dauerhaft an $LN an?

Mike

erich
Beiträge: 3
Registriert: Montag 24. Mai 2021, 14:25

Re: String in Zahl umwandeln

Beitrag von erich » Mittwoch 26. Mai 2021, 21:46

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.
Dateianhänge
Beispiel.jpg
Beispiel.jpg (61.2 KiB) 2561 mal betrachtet

IKT
Beiträge: 554
Registriert: Mittwoch 4. November 2009, 18:32

Re: String in Zahl umwandeln

Beitrag von IKT » Mittwoch 26. Mai 2021, 23:24

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.
++++++
Gruss/regards IKT

Mike D
Beiträge: 528
Registriert: Dienstag 14. Oktober 2008, 14:48
Wohnort: Elbe- Weser-Dreieck

Re: String in Zahl umwandeln

Beitrag von Mike D » Donnerstag 27. Mai 2021, 08:34

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

Mike D
Beiträge: 528
Registriert: Dienstag 14. Oktober 2008, 14:48
Wohnort: Elbe- Weser-Dreieck

Re: String in Zahl umwandeln

Beitrag von Mike D » Donnerstag 27. Mai 2021, 08:56

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.

abacom
Site Admin
Beiträge: 3917
Registriert: Dienstag 23. September 2008, 10:54
Kontaktdaten:

Re: String in Zahl umwandeln

Beitrag von abacom » Donnerstag 27. Mai 2021, 13:57

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
ABACOM support

erich
Beiträge: 3
Registriert: Montag 24. Mai 2021, 14:25

Re: String in Zahl umwandeln

Beitrag von erich » Donnerstag 27. Mai 2021, 21:25

... 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

Mike D
Beiträge: 528
Registriert: Dienstag 14. Oktober 2008, 14:48
Wohnort: Elbe- Weser-Dreieck

Re: String in Zahl umwandeln

Beitrag von Mike D » Dienstag 1. Juni 2021, 10:05

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

Antworten

Zurück zu „Thema: Schaltung und Bauteile“