LabVIEWForum.de
Seriell eingelesene Daten konvertieren - Druckversion

+- LabVIEWForum.de (https://www.labviewforum.de)
+-- Forum: LabVIEW (/Forum-LabVIEW)
+--- Forum: LabVIEW Allgemein (/Forum-LabVIEW-Allgemein)
+---- Forum: Instrument IO & VISA (/Forum-Instrument-IO-VISA)
+---- Thema: Seriell eingelesene Daten konvertieren (/Thread-Seriell-eingelesene-Daten-konvertieren)

Seiten: 1 2


Seriell eingelesene Daten konvertieren - -cosmo- - 01.03.2017 14:32

Hallo,

ich bin Neueinsteiger in Labview, habe auch schon mir die Tutorials angesehen und durchgespielt. Das Einlesen von Daten über einen seriellen Port klappt mittlerweile auch gut. Was irgendwie nicht funktionieren will, ist die Konvertierung der Daten in Zahlen, bzw. der Darstellung in einem Diagramm. Über den seriellen Port wird ein String mit 3 Zeilen gesendet, erste Zeile für Datum/Uhrzeit, zweite Zeile für pH-Wert und 3. Zeile für O2. Kann mir einer eine kleine Hilfestellung geben, wie ich aus diesem langen String irgendeine Zahl aus einer bestimmten Zeile extrahiere?

Im Anhang ist der Ausgabestring zu sehen:

BG

-cosmo-


RE: Seriell eingelesene Daten konvertieren - GerdW - 01.03.2017 14:43

Hallo cosmo,

herzlich willkommen im Forum!

Beispiel zu deiner Frage:
[attachment=57421]

Es wäre hilfreicher, wenn man den korrekten Antwortstring deines Gerätes kennen würde: manchmal muss man sich auch um irgendwelche Sonderzeichen (Spaces, Tabs, NL, CR, etc.) kümmern.


RE: Seriell eingelesene Daten konvertieren - -cosmo- - 01.03.2017 19:57

Ahh, vielen Dank, wie heißt dieser großartige Block? Das ist glaub ich genau was ich suche!

Okay, ja das stimmt, ich denke, ich müsste das dann in das Feld oben links mit ergänzen?! Was müsste ich denn rein informativ für CR und Tabs dort ergänzen, bzw. müsste ich bei Spaces auch was ergänzen? Gerade mal nachgeschaut, in meinem C-Code hab ich alles unnötige einfach ignoriert und gelöscht, weshalb ich gerade nicht sicher bin, ob es Tabs oder Spaces sind, würde es einfach mal ausprobieren und nochmal schauen.


BG


RE: Seriell eingelesene Daten konvertieren - jg - 01.03.2017 20:25

(01.03.2017 19:57 )-cosmo- schrieb:  Ahh, vielen Dank, wie heißt dieser großartige Block? Das ist glaub ich genau was ich suche!
Scan from String
(01.03.2017 19:57 )-cosmo- schrieb:  Okay, ja das stimmt, ich denke, ich müsste das dann in das Feld oben links mit ergänzen?! Was müsste ich denn rein informativ für CR und Tabs dort ergänzen, bzw. müsste ich bei Spaces auch was ergänzen? Gerade mal nachgeschaut, in meinem C-Code hab ich alles unnötige einfach ignoriert und gelöscht, weshalb ich gerade nicht sicher bin, ob es Tabs oder Spaces sind, würde es einfach mal ausprobieren und nochmal schauen.
Einfach den Anzeigemodus des String Indicators umschalten, und schon werden die "Sonderzeichen" interpretierbar dargestellt.
[attachment=57425]
Gruß, Jens


RE: Seriell eingelesene Daten konvertieren - -cosmo- - 01.03.2017 20:36

Okay, super, vielen Dank.


RE: Seriell eingelesene Daten konvertieren - -cosmo- - 02.03.2017 10:34

Hallo nochmal,

also so richtig will es noch nicht klappen, die erste Zeile (Datum) wird richtig eingelesen und angezeigt. Ab da klappt es allerdings nicht mehr. Habe mir hilfsweise nur ein Textfeld erstellt, um dieses anzuzeigen. Das Textfeld stammt aus dem originalen Output. Habe es auf dem Bild einmal mit Sonderzeichen und ohne angezeigt. Im Formatfeld habe ich alle fehlenden Zeichen ergänzt.

BG,

Micha


RE: Seriell eingelesene Daten konvertieren - GerdW - 02.03.2017 11:20

Hallo Micha,

kannst du dein VI nochmal für LV2014 speichern und anhängen (Datei->Speichern für vorige…)?


RE: Seriell eingelesene Daten konvertieren - -cosmo- - 02.03.2017 13:18

Klar, kein Problem.


RE: Seriell eingelesene Daten konvertieren - GerdW - 02.03.2017 13:51

Hallo cosmo,

anbei mal die brachiale Methode: wenn der empfangene String so dämliche Zeichen(kombinationen) enthält, dann filtert man ihn einfach mal und macht ihn dadurch "sauber". Danach ist das Parsen des Strings deutlich einfacher!
Was ich als störend empfinde:
- Zeilenendezeichen mitten im String
- mehrfache Spaces hintereinander, um die Darstellung aufzuhübschen
- dieses "\11\13" am Stringanfang: kann man das nicht evtl. als TermChar verwenden, z.B. die "\13"?

Außerdem kann/sollte man bei Strings immer den Anzeigemodus sichtbar machen - wie im angehängten VI…


RE: Seriell eingelesene Daten konvertieren - -cosmo- - 02.03.2017 15:39

Ah super, das scheint zu klappen, allerdings aktualisiert er die Daten nicht nach erstmaligen Einlesen. Schon versucht, die Blöcke woanders hinzuverschieben, aber es muss ja in die innerste Schleife rein, wo ich auch die Anzeige beschreibe. Die Schleife zum Einlesen über den VISA Port läuft ja auch in einer Endlosschleife, da müsste doch auch das Beschreiben der Anzeigen endlos weitergehen, richtig? Warum sind die nach einmaligen Beschreiben nur statisch? Verstehe nicht ganz, warum sich die Variablen nicht mit ändern wollen.

BG,

Micha