LabVIEWForum.de - R232 Datensynchronisierung

LabVIEWForum.de

Normale Version: R232 Datensynchronisierung
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Seiten: 1 2
Hallo alle zusammen,

ich bin gerade dabei, ein Messgerät mit Hilfe einer R232 Schnittstelle auszulesen.
Realisiert habe ich das ganze mit VISA. (VISA Open, Write zum Befehl senden und Byteabfrage und VISARead zum emfangen in eine While-Schleife). Ich habe jedoch ein Problem damit, die Daten, die vom Messgerät in der richtigen Zeit auszulesen...
Um überhaupt Werte angezeigt zu bekommen muss ich in meine WhileSchleife eine Wartezeit einbauen. Diese habe ich
voher mit Hilfe des Hyperterminal in etwa gemessen. Soweit funktioniert auch alles. Allerdings nur solange, wie das Messgerät zwischenzeitig nicht den Messbereich wechselt oder eine Owerflow ausgibt, denn dann "stockt" er kurz und die Senderate stimmt nicht mehr.

Gibt es eine Möglichkeit, LabVIEW zu sagen, dass er immer nur dann Empfangen soll, wenn auch ein Wert kommt. Also eine Art "dynamische" Wertauslese???

Viele Dank schon mal für eure Hilfe

Viele Grüße
Kaa

P.S: Vorläufiges Testprogramm im Anhang!
Hallo,

gib' doch mal im "Example Finder" den Suchbegriff "Serial" ein, dann findest Du folgendes Beispiel (Basic Serial Write and Read), das Du verwenden kannst.
Deine Verzögerung startet u.U. schon parallel zum Lesen. Die muss vor Deiner Schleife kommen (vgl. Beispiel).

Gruß Markus
' schrieb:Hallo alle zusammen,

ich bin gerade dabei, ein Messgerät mit Hilfe einer R232 Schnittstelle auszulesen.
Realisiert habe ich das ganze mit VISA. (VISA Open, Write zum Befehl senden und Byteabfrage und VISARead zum emfangen in eine While-Schleife). Ich habe jedoch ein Problem damit, die Daten, die vom Messgerät in der richtigen Zeit auszulesen...
Um überhaupt Werte angezeigt zu bekommen muss ich in meine WhileSchleife eine Wartezeit einbauen. Diese habe ich
voher mit Hilfe des Hyperterminal in etwa gemessen. Soweit funktioniert auch alles. Allerdings nur solange, wie das Messgerät zwischenzeitig nicht den Messbereich wechselt oder eine Owerflow ausgibt, denn dann "stockt" er kurz und die Senderate stimmt nicht mehr.

Gibt es eine Möglichkeit, LabVIEW zu sagen, dass er immer nur dann Empfangen soll, wenn auch ein Wert kommt. Also eine Art "dynamische" Wertauslese???

Viele Dank schon mal für eure Hilfe

Viele Grüße
Kaa

P.S: Vorläufiges Testprogramm im Anhang!


Also ich würde zwei Vorschläge machen:

1) Alles asynchron einlesen. Also so wie du es machst, nur die Antwort in einen Schieberegister sammeln. Die gesammelten Daten kannst du dann nach deinen wünschen auswerten.

2) VISA Events benutzen. Du kannst auf ein Signal (Interrupt) von der seriellen Schnittstelle warten. Sobald das Signal kommt sofort die Schnittstelle auslesen.

eg

P.S. hier gibt es ein Beispiel, aber für LV8.0. Wenn du willst kann ich es dir runterkonvertieren. In dem Beispiel benutze ich beide meine Vorschläge.
http://www.LabVIEWforum.de/index.php?s=&am...ost&p=30342
Erstmal vielen vielen Dank für die schnelle Antwort!

@Markus:
Habe das ganze eben mit dem Beispiel ausprobiert. An einer Verögerungszeit voher liegt es leider nicht.
Starten tut er noch recht gut und die Werte passen auch, solange er nicht in einen Overflow oder einen
anderen Messbereich kommt...

@eg:
Die Daten sammeln funktioniert auch, aber leider ist es nicht das, was ich möchte... brauche eine Liveanzeige.
Vielleicht kurz zu dem Hintergrund:
Die Anzeige des Gerätes ist sehr klein und schlecht beleuchtet. Gemessen wird aber meist im Dunkeln, so dass eine Anzeige auf dem Monitor sehr hilfreich ist (dabei ist die Wertefolge uninteressant)

Wäre super, wenn du mir das Beispiel auf 7.1 konvertieren könntest...
Werde es im nächsten Schritt mit VISA Events probieren...

Viele Grüße
Kaa
Lese bitte das hier http://forum.ib-berger.com/index.php?s=&am...indpost&p=7 und probiere es aus. Daten sammeln bedeutet nicht gleich Postparsing, du bekommst damit deine Live-Anzeige.

Mein Beispiel lässt sich leider nicht so einfach auf 7.1 konvertieren.

eg
Hallo eg,

ich hab jetzt folgendes probiert (Anhang). Leider funktioniert es nicht und er zeigt mir nichts in der Anzeige an....
Hast du so etwas in der Art gemeint??

Viele Grüße
Kaa
' schrieb:Hallo eg,

ich hab jetzt folgendes probiert (Anhang). Leider funktioniert es nicht und er zeigt mir nichts in der Anzeige an....
Hast du so etwas in der Art gemeint??

Viele Grüße
Kaa


Ja, genau. Kannst du noch den anderen Case knipsen? Was ist da drin?

eg
Case 0 sieht so aus:
Du kannst in den Case 0 eine kleine Wartezeit einbauen, z.B. 50 ms. Und ganz wichtig bei der Initialisierung den Termination Character abzuschalten, weil die Antwort nicht in ASCII, sondern binär kommt.

eg
Hi!
Änderungen habe ich soweit vorgenommen...
Leider ist die Anzeige immernoch wild am blinken. (Zeigt zwischendurch auch immer mal wieder 0 an..)
Es scheint zwar jetzt keine Art Datenstau mehr zu geben, allerdings lässt sich die Anzeige nicht wirkich schön ablesen...

Viele Grüße
Kaa
Seiten: 1 2
Referenz-URLs