LabVIEWForum.de
Timing RS232: Befehle schreiben, Werte lesen - 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: Timing RS232: Befehle schreiben, Werte lesen (/Thread-Timing-RS232-Befehle-schreiben-Werte-lesen)



Timing RS232: Befehle schreiben, Werte lesen - GT123 - 22.10.2009 06:21

Hallo zusammen,

ich möchte einen Barometer (VAISALA PTU300) per RS232 auslesen.
Das Problem das vorliegt ist vermutlich ein Timing Problem.

Die Schnittstellenparameter sind habe ich überprüft. I.O.
Sowie auch die Befehle.

Mit dem Befehl "smode [stop]" in Einzelabfragemodus versetzen, danach "send" Befehl damit die Werte übermittelt werden.

Im HyperTerminal funktioniert die Kommunikation einwandfrei.

1.
Was ich hier wahrscheinlich noch benötige ist eine LabVIEW Funktion wie Service Request...
LabVIEW muss nach den 2 gesendeten Befehlen warten bis das Gerät die Werte sendet. Wie wir so etwas gelöst?

2.
Können diese Befehle direkt nacheinander gesendet werden, oder sollte jeweils ein CarriageReturn folgen, oder sollte jeweils ein Close Visa folgen und
für den nächsten Befehl eine neue Visa open, write .... Prozedur folgen?

Anbei das VI.

Lv86_img


Timing RS232: Befehle schreiben, Werte lesen - Achim - 22.10.2009 07:04

Wenn's im HyperTerminal funktioniert...und in LV nicht...liegts meistens an folgendem:

LV hängt im Gegensatz zum HyperTerminal nicht automatisch ein CR an den gesendeten Befehl an. Wenn dein anzusprechender Partner das aber erwartet, läuft's halt nicht!

"Close" brauchst du nicht, du könntest zwischen den Befehlen aber mal ein WAIT von ein paar ms einfügen...nach dem Senden gehst du in einen "Warte-auf-Daten"-Zustand und fragst mit "Bytes at port" (Seriell-Palette) ab, wieviel du mit "Read" abholen kannst.

Gruß
Achim


Timing RS232: Befehle schreiben, Werte lesen - GT123 - 22.10.2009 09:36

Hallo Achim,

so wie ich das verstanden habe sollte es die VISA Wait on Event Function sein?
Und als "event type" dann "serial break" verwenden?


Timing RS232: Befehle schreiben, Werte lesen - GT123 - 02.11.2009 06:56

Hallo

kann mir jemand weiterhelfen.
Wie kann ich diesen "Warte-auf-Daten"-Zustand das Achim meint realisieren?

Vielen Dank für Eure Hilfe


Timing RS232: Befehle schreiben, Werte lesen - rolfk - 02.11.2009 08:52

' schrieb:Hallo

kann mir jemand weiterhelfen.
Wie kann ich diesen "Warte-auf-Daten"-Zustand das Achim meint realisieren?

Vielen Dank für Eure Hilfe

Warten auf Daten wird von VISA Read automatisch getan. VISA Read wird beendet wenn einer der folgenden Ereignisse eintritt:

1) Die verlangte Anzahl Character sind verfügbar. -> Die Daten werden ohne error zurückgegeben.
2) Ein Fehler ist im unterliegenden Treiber aufgetreten. -> Du bekommst diesen Fehler übergeben.
3) Das Timeout das ein Property der VISA Session ist, ist abgelaufen. -> Du bekommst einen Timeout error übergeben.

Du siehst die Funktion wartet bis entweder ein Fehler auftritt, die verlangten Daten verfügbar sind oder das eingestellte Timeout abgelaufen ist.

Damit erübrigt sich jegliche weitere Form von Warten auf Daten in den meisten Fällen.

Aber bevor Du auf die Daten warten kannst müssen sie geschickt werden. So wie Achim es schon erwähnt hat haben die meisten seriellen Instrumente ganz spezifische Vorstellungen davon, wie das Kommando aussehen muss, damit eine Antwort kommt. Da reicht des eigentliche Kommando nicht, sondern es muss mit einer bestimmten Zeichenfolge abgeschlossen werden, meist ist das CR und/oder LF (Carriage Return und Line Feed). HyperTerminal macht das (nein nicht automatisch sondern) wenn Du die Enter Taste drückst. Die Enter Taste ist beim (DOS/Windows) Computer gleich wie ein CR und LF.

In LabVIEW hast Du keine Enter Taste um das Kommando zu verschicken, sondern muss man diese Character explizit mit in den Datenstrom aufnehmen, um sie auch zu verschicken.


Timing RS232: Befehle schreiben, Werte lesen - GT123 - 02.11.2009 08:57

Vielen Dank für die ausführliche Hilfe.