LabVIEWForum.de - Datenstring von Serieller Verbindung verarbeiten

LabVIEWForum.de

Normale Version: Datenstring von Serieller Verbindung verarbeiten
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Hallo!

Ich hätte eine Frage an euch:

Mein Sensor schickt über die serielle Verbindung einen Daten String welcher folgendermaßen aufgebaut ist:

+(-)000,70 +(-)000098

Es handelt sich hierbei um das Signal eines Drehmoment und Axialkraftsensor.
Habe letztens die Daten auch schon bekommen indem ich die Funktion Scan from String und Scan Value verwendet habe.

Leider habe ich hin und wieder?? das Problem, dass mein Programm mit folgenden Fehler aussteigt:

LabVIEW: An input parameter is invalid. For example if the input is a path,
the path might contain a character not allowed by the OS such as ? or @.

Kann mir nicht ganz erklären, woher dieser Fehler kommt? eventuell eine mitgesendete Gerätekennung?


Würde die Funktion Scan From string gerne ersetzen, komme aber hier leider nicht weiter mit
der Typkonvertierung usw.

Könnt ihr mir vl sagen, wie ihr solche Daten weiterverarbeitet?
.. steh leider ein wenig auf dem Schlauch und würde nach einer besseren Lösung suchen...

Teilt ihr euch den Datenstring in Bytes auf und konvertiert ihr dann ? oder lest ihr euch über die String - Trim Funktion die Daten aus?
damit ihr diese weiterverarbeiten könnt?

Im Anhang mein "altes" Programm

Vielen Dank für eure Unterstützung!

LG Stefan
Hallo Stefan,
Dein Programm muss bevor es gestartet wird schon wissen welche COM es initialisieren soll.
Eine Änderung der COM Eintragung im Bedienfeld COM-Port kann erst nach der Initialisierung der Schnittstelle geändert werden ( Die Software ist schneller als Du Big Grin).

In dem VI fehlt die Vorgabe der COM.

Gruß
Freddy
Hallo Stefan,

du aktivierst die Nutzung des TermChars beim seriellen Port: damit ist die Benutzung von BytesAtPort grob falsch!
Frage einfach vollständige Botschaften ab - einfach mehr Zeichen abfragen, als du erwartest!

Zitat:das Problem, dass mein Programm mit folgenden Fehler aussteigt:
Wenn dein Programm wegen eines kleinen Fehlers "aussteigt", dann hast DU etwas nicht richtig programmiert…
Wie wäre es mit Errorhandling???

Zitat:+(-)000,70 +(-)000098
So:
[attachment=60390]
(Gleich inklusive einfachem Errorhandling!)
Hallo!

Vielen Dank für eure Rückmeldungen!

@Freddy: Ich habe es so programmiert, da der Sensor immer am gleichen COM Port hängt, du meinst whs das man zunächst den COM Port konfigurieren sollte und anschließend die Resource an einen Schiebregister weitergibt.. -und dann der Benutzer entscheiden soll ob die Daten nun gelesen werden sollen oder ob man einen neuen Port konfigurieren möchte oder?

@Gerd: Vielen Dank!

Ich wollte zunächst einmal wissen welche Funktionen ihr für die Weiterverarbeitung von Strings verwendet, da ich mir derzeit damit noch ein wenig schwer tue, wenn die Daten von einem Sensor in einem String stehen und ich diese weiterverarbeiten muss, danke auf alle Fälle für deinen Tip!

Zur seriellen Schnittstelle ist mir leider nicht bewusst, warum BytesAtPort grob falsch ist..?
Meinst du das man in Abhängigkeit der erwarteten Daten einfach eine größere Byte Zahl angeben soll?

Habe die serielle Schnittstelle leider noch nie benutzt und habe deshalb fürs erste die Einstellungen aus
den NI-Beispielprogrammen verwendet.

Vielen Dank!!

LG
Hallo Stefan,

Zitat:Zur seriellen Schnittstelle ist mir leider nicht bewusst, warum BytesAtPort grob falsch ist..?
Weil man diese Funktion so gut wie nie benötigt.

Zitat:Meinst du das man in Abhängigkeit der erwarteten Daten einfach eine größere Byte Zahl angeben soll?
Ja.
(Wenn du das TermChar so gesetzt hast, wie es von deinem Gerät gesendet wird…)

Zitat:Habe die serielle Schnittstelle leider noch nie benutzt und habe deshalb fürs erste die Einstellungen aus den NI-Beispielprogrammen verwendet.
Leider sind die Beispiel-Programme von NI zur seriellen Schnittstelle ("Basic Serial Read and Write") so ziemlich die schlechtesten Beispiele - sie verwenden leider BytesAtPort! Besser nicht daran orientieren…
Hallo Gerd!

Vielen Dank für die Hinweise!
Werde versuchen das Programm sauberer zu gestalten...
Kannst du mir vl sagen, wo man "bessere Beispiele" dazu
finden kann? ..

Habe damals zu einem anderen Post noch ein paar fragen zur parallelen Verarbeitung von
Schleifen:

https://www.labviewforum.de/showthread.p...698&page=2

wäre dankbar könntest du diese vl noch beantworten..
da ich meine Daten die ich über die serielle Schnittstelle bekomme noch in einem TDMS File abspeichern muss und da so einige Fragen zur
Verarbeitung aufgetaucht sind..

Kann die Frage aber gern auch in einen anderen Forumsteil posten, da diese leider thematisch
nicht wirklich zur meiner ursprünglichen Überschrift passt!

Vielen Dank für deine Unterstützung!

LG Stefan
Referenz-URLs