HBytr Posted April 25 Share Posted April 25 Ich habe eine Digitalwaage mit zwei Kommastellen und RS232 Schnittstelle. Der Zahlenwert der zweiten Kommastelle befindet sich in einer " [ ] " ! Ich schaffe es nicht, den kompletten String ( siehe Foto z.B. 17. 0[3] ) ins Dasylab Schaltbild einzulesen. Hättet ihr einen Tipp, was ich probieren könnte ? Quote Link to comment Share on other sites More sharing options...
HolWo Posted April 25 Share Posted April 25 Hallo! Möchten Sie den Text "17.0[3]" so interpretieren, dass die 17.0 und die 3 als Daten auf zwei Ausgängen des RS232-Eingangsmoduls ausgegeben werden? Format-String Kanal 0: "Project Name:" a\n Format-String Kanal 1: a\x5B Format-String Kanal 2: a\x5D Format-String Kanal 3: $1\r In Hochkommas eingeschlossene Texte dienen als Suchmuster, d.h. der Puffer, in dem die serielle Schnittstelle die vom Gerät übertragenen Daten sammelt, wird durchsucht, bis der Text "Projekt Name:" gefunden wird. Wird der Text gefunden platziert sich der gedachte "Interpretationsfinger" hinter den Doppelpunkt. Hier folgen noch Leeerzeichen und Steuerzeichen, die eigentlich uninteressant sind, aber noch "weggelesen" werden müssen. Das a\n im Formatstring versucht alle aSCII-Zeichen bis zum angegebenen Terminator (\n = <LF>) als Zahl zu interpretieren. Das schlägt fehl, weil es keine sinnvolle Zahl ergibt, liest aber die entsprechenden Zeichen weg. Den Ausgang 0 des Modules entsprechend nicht mit einer Datenleitung verbinden, sondern das unsinnige Ergebnis einfach ignorieren. Der Interpretationsfinger steht nun hinter dem <LF> (in der Zeile mit "Project Name"). Der Formatstring in Kanal 1 a\x5B liest nun alle ASCII-Zeichen bis zum Terminatorsymbol \x5B (\x = Hex --> \x5B --> ASCII-Hexcode für die geöffnete eckige Klammer; Google.de --> ASCII-Tabelle ). Auf dem Ausgang 1 des Modules sollte die 17.0 (als Zahl) ausgegeben werden. Weiter geht es hinter der geöffneten eckigen Klammer mit Formatstring des Kanals 2: a\x5D. Dieselbe Prozedur, nur mit einem anderen Terminatorsymbol, der geschlossenen eckigen Klammer (Hexcode 5D). Ausgang 2 des Moduls liefert die "Text 3" als 3.0. Nun steht der Interpretationsfinger hinter der geschlossenen Klammer. $1\r liest nun die Zeichen in den globalen String 1 ($1=DASYLab-Platzhalter in RS232-Formatstrings für String1, $2 --> String 2 usw.). D.h., dass sämtlicher Text bis zum Terminatorsymbol \r (=<CR>, Carriage Return, Wagenrücklauf) in den String übertragen wird. Der letzte Ausgang bleibt wieder unverbunden. Der im Puffer verbliebene Rest (4x <CR><LF>) wird bei der nächsten Anforderung von Daten übersprungen, weil in Kanal 0 des Moduls zunächst wieder auf das Suchmuster gewartet wird. Würde man ohne ein Suchmuster versuchen, via RS232 gelieferte Daten zu analysieren, müsste man ALLE Zeichen immer durch geeignete Formatstrings beschreiben und somit verarbeiten. Quote Link to comment Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.