Wenn dein Problem oder deine Frage geklärt worden ist, markiere den Beitrag als "Lösung",
indem du auf den "Lösung" Button rechts unter dem entsprechenden Beitrag klickst. Vielen Dank!
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???
Developer Suite Core -> LabVIEW 2015 Prof.
2006
EN
71083
Deutschland
R232 Datensynchronisierung
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
-------------------------------------------------------------------------- Bitte stellt mir keine Fragen über PM, dafür ist das Forum da - andere haben vielleicht auch Interesse an der Antwort !!
--------------------------------------------------------------------------
02.07.2007, 10:45 (Dieser Beitrag wurde zuletzt bearbeitet: 02.07.2007 10:47 von eg.)
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.
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...
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??
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?
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.
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...