LabVIEWForum.de - Probleme mit RS232

LabVIEWForum.de

Normale Version: Probleme mit RS232
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Hallo,

ich möchte über eine RS232 Schnittstelle, Daten von einem Leitfähigkeitsmessgerät auslesen (im Anhang befindet sich die vi mit der ich das erreichen möchte). Dabei besteht das Problem, dass die Daten zerhackt ankommen, also durcheinander und stellenweise fehlen auch einzelne Zeichen. Setze ich nun einen 10 Sekunden Timer ein, kommen alle Werte, bis auf den letzten ohne Probleme an, allerdings benötige ich für die Weiterverarbeitung die Daten im 1 sek Intervall.

Hier noch einige Daten, die evtl. nützlich sind:
LabVIEW Version: 7.1
Das Leitfähigkeitsmessgerät schickt jede Sekunde Daten zur Temperatur und Leitfähigkeit im ASCII Format
Schnittstelle des Messgeräts: RS232, 1200 Baud, 8 Daten Bit, 1 Stop Bit, kein Paritätsbit
Endtags am Ende jeder Zeile sind CR und LF

PS: Wenn ich die Daten über einen beliebigen Com Port Reader auslese funktioniert das ohne Probleme!
PPS: Ich habe schon die Suche bemüht und einige andere vi's (auch welche hier ausm Forum) zum auslesen des Com Ports probiert ... die meisten basierten auf Visa, dabei zeigt er aber immer einen I/O Error an.

Hoffe, da kann mir jemand weiterhelfen.

MfG...
Hallo newcomer123 ,

wenn du LV7.1 hast, kansst du lieber anderes Init-VI für dein Programm verwenden. Wichtig ist hier das Abschlusszeichen und Timeout.

Zum VISA: I/O Fehler kommt, weil du kein VISA installiert hast. Die VISA-Treiber befinden sich auf der LV-CD.

Gruss, Eugen
Hallo,

bei mir Funktioniert das Auslesen gar nicht. Du schreibst was von einem Com Port Reader. Welchen hast du da? Kann man den irgendwo runterladen?

Pascal
@ Pascal

Mit einem Comport-Reader meint newcomer123 einen einfachen Hyperterminal (in jeder Windowsversion enthalten). Es gibt sehr viele Tools dieser Art. Ich benutze z.B. MTTY, ZOK, G-Link oder Windows-Hyperterminal.

Gruss, Eugen
Grundsätzlich sollte es mit VISA funktionieren. VISA ist einfach nur eine universelle Treiberschicht, die bestimmte Hardware (RS232, GPIB; USB, etc...) auf eine bestimmte Art und Weise abstrahiert und für jeden Typ die mehr oder weniger gleiche Vorgehensweise bietet.

Wenn VISA bei dir nicht funktioniert, dann ist es vielleicht angebracht, dass du einfach mal den neuesten VISA-Treiber installierst?

Die Info, wo du den Treiber runterladen kannst bekommst du hier

Grüße
CB
Hi
@ all ... und besonders eugen graf
Vielen Dank, das war genau das Richtige, das Auslesen funktioniert mit VISA jetzt ohne Probleme.

Jetzt steh ich aber schon vor dem nächsten Problem (hab ich schon erwähnt, dass ich LabVIEW Neuling bin?! Big Grin )
Der Datenstrom vom Messgerät sieht so aus:

4.59mS/cm, 23.2øC ATC

bzw. so

201uS/cm,23.2øC ATC

Nun hab ich das Problem, dass ich erstmal rausfiltern muss, ob der Wert in mS oder uS ist und dann den mS Wert mit 1000 multiplizieren muss um die weitere Berechnung einheitlich zu machen.
Ich hatte das rausfiltern erst mit einem String Vergleichsoperator versucht (also einfach in dem String nach nem "m" suchen), da besteht aber das Problem, dass der nur einmal umspringt (also Startwert uS, der pringt dann auch auf mS um, wenn der Wert wieder fällt geht der aber nicht auf uS zurück).
Ich hatte dann versucht den Vergleichsoperator in ne Endlosschleife zu legen, dass der sich immer neu aktualisieren muss, aber wie das nunmal so ist mit Endlosschleifen gings dahinter nicht mehr weiter, weil er dann in der Schleife festhing.

Hat da jemand ne Lösung für?!

@ Pascal:
Wie schon geschrieben, entweder Hyper Terminal, oder einfach mal google bemühen, da findet man ne ganze Menge

MfG....


EDIT: Falls es wichtig sein sollte, der Vergleichsoperator war Match Pattern
newcomer123 schrieb:Hi
@ all ... und besonders eugen graf
Vielen Dank, das war genau das Richtige, das Auslesen funktioniert mit VISA jetzt ohne Probleme.

Jetzt steh ich aber schon vor dem nächsten Problem (hab ich schon erwähnt, dass ich LabVIEW Neuling bin?! Big Grin )
Der Datenstrom vom Messgerät sieht so aus:

4.59mS/cm, 23.2øC ATC

bzw. so

201uS/cm,23.2øC ATC

Nun hab ich das Problem, dass ich erstmal rausfiltern muss, ob der Wert in mS oder uS ist und dann den mS Wert mit 1000 multiplizieren muss um die weitere Berechnung einheitlich zu machen.
Ich hatte das rausfiltern erst mit einem String Vergleichsoperator versucht (also einfach in dem String nach nem "m" suchen), da besteht aber das Problem, dass der nur einmal umspringt (also Startwert uS, der pringt dann auch auf mS um, wenn der Wert wieder fällt geht der aber nicht auf uS zurück).
Ich hatte dann versucht den Vergleichsoperator in ne Endlosschleife zu legen, dass der sich immer neu aktualisieren muss, aber wie das nunmal so ist mit Endlosschleifen gings dahinter nicht mehr weiter, weil er dann in der Schleife festhing.

Hat da jemand ne Lösung für?!


Falls es wichtig sein sollte, der Vergleichsoperator war Match Pattern

Hi!

Ich hab LV 8, aber vielleicht kannst du damit was anfangen.

ich glaube die Funktion "Fract / Exp to Number" ist in niedrigeren LV Versionen etwas anders, musst Du halt umbasteln.
Funktioniert! Ich danke dir ganz herzlich Big Grin

MfG...
Referenz-URLs