LabVIEWForum.de
COM-Port: error-cluster - 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: COM-Port: error-cluster (/Thread-COM-Port-error-cluster)

Seiten: 1 2


COM-Port: error-cluster - Beam1 - 28.02.2017 15:15

Hallo,

Ich versuche gerade, eine Fehlerbehandlung in mein Programm im Teil "Programm-Initialisierung" einzufügen, komme damit aber noch nicht klar.
Grundsätzlich funktioniert die Ansteuerung eines Gerätes am COM-Port (wenn das Gerät angeschlossen ist und der richtige COM-Port vom Anwender ausgewählt wurde). Mir geht es jetzt darum, beim Programmstart (also bevor die eigentliche Mess-Schleife beginnt), abzufangen, wenn der Anwender einen falschen COM-Port auswählt oder wenn er vergesssen hat, das Gerät am COM-Port anzuschließen.

Ich habe das mal getestet und zugrunde gelegt habe ich hier mal das LabView-eigene Beispiel "Simple Serial.vi":
wenn ich den falschen COM-Port auswähle und auch auch wenn das Gerät nicht am COM-Port angeschlossen ist, passiert folgendes (Anzeige was auf dem Draht übertragen wird mit Kontextmenü "Probe" im "Probe Watch Window"):
niemals wird im Fehler-Cluster der Status "TRUE" (= Fehler) ausgegeben (was zu erwarten wäre wenn ein falscher COM-port gewählt wurde oder das Gerät gar nicht angeschlossen ist), er bleibt immer auf "FALSE".
Nach dem VI "VISA Configure Serial Port" und auch noch nach dem VI "VISA Write" wird Fehlercode 0 und als Fehlertext "no error" ausgegeben.
Wie kann das sein?
Erst nach dem VI "VISA Read" wird eine Fehlercode-Nummer ausgegeben, im Fehlertext steht aber nur "Warning" und dann eine Erklärung. Das ist mir unverständlich, denn schließlich kann bei falscher Angabe des COM-Ports bzw. wenn das Gerät gar nicht angeschlossen ist, doch gar nicht kommuniziert werden, was also eindeutig einen Fehler zurückgeben müßte.


Und noch was zur "Optik" (was aber für die Fehlerauswertung im Programm nicht so relevant ist): warum wird beim Fehlercluster im Fehlerfall ein grünes Häkchen ("grün" steht normalerweise ja für "alles ok") angezeigt statt eines Roten Kreuzes (rot = Warnfarbe, also "Achtung: Fehler")?


RE: COM-Port: error-cluster - GerdW - 28.02.2017 15:44

Hallo Beam,

wenn du ein Problem mit DEINEM VI hast, dann solltest du DEIN VI hier anhängen…

Zitat:Und noch was zur "Optik" (was aber für die Fehlerauswertung im Programm nicht so relevant ist): warum wird beim Fehlercluster im Fehlerfall ein grünes Häkchen ("grün" steht normalerweise ja für "alles ok") angezeigt statt eines Roten Kreuzes (rot = Warnfarbe, also "Achtung: Fehler")?
Weil das Standard-FP-Elemente sind. Wenn du andere Farben haben willst, kannst du ja editieren…
(Außerdem sollte ein User diesen Errorcluster nie direkt zu Gesicht bekommen!)


RE: COM-Port: error-cluster - Beam1 - 28.02.2017 16:17

(28.02.2017 15:44 )GerdW schrieb:  wenn du ein Problem mit DEINEM VI hast, dann solltest du DEIN VI hier anhängen…


Beam1 schrieb:zugrunde gelegt habe ich hier mal das LabView-eigene Beispiel "Simple Serial.vi"

War das nicht deutlich genug?


RE: COM-Port: error-cluster - jg - 28.02.2017 17:05

Hast du dir einmal die Mühe gemacht, in das VI "VISA Configure Serial Port (Instr).vi" hineinzuschauen? Dort wird nur der Port konfiguriert und noch nicht geöffnet. Bei VISA geschieht das, wenn du es nicht explizit machst, implizit bei der ersten Read oder Write Operation. Deshalb gibt es bei "keiner Auswahl" wohl noch keinen Fehler sondern nur eine Warnung.

Übrigens, wenn gar kein Gerät angeschlossen ist, der COM-Port aber existiert, dann wirst du auf jeden Fall erst einen Fehler erhalten, wenn du auf eine Antwort auf irgendeine Anfrage wartest. Der Port exisitert ja, VISA-Open und VISA-Write werden keinen Fehler melden.

Gruß, Jens


RE: COM-Port: error-cluster - GerdW - 28.02.2017 20:52

Hallo Beam,

Zitat:zugrunde gelegt habe ich hier mal das LabView-eigene Beispiel "Simple Serial.vi"
War das nicht deutlich genug?
Wenn du etwas "zugrunde legst", gehe ich von "Anpassungen" durch dich aus. Und schon weiß ich nicht mehr, was du genau benutzt hast…


RE: COM-Port: error-cluster - GerdW - 01.03.2017 08:07

Hallo Beam,

Zitat:Und noch was zur "Optik" (was aber für die Fehlerauswertung im Programm nicht so relevant ist): warum wird beim Fehlercluster im Fehlerfall ein grünes Häkchen ("grün" steht normalerweise ja für "alles ok") angezeigt statt eines Roten Kreuzes (rot = Warnfarbe, also "Achtung: Fehler")?
Nachtrag dazu:
Ich habe gerade mal ein neues VI erstellt und einen Errorcluster ins FP (aus der "Modern"-Palette) gepackt: grünes Häkchen bei "kein Fehler" und "rotes Kreuz" bei "Fehler!".
Was genau gefällt dir daran nicht?


RE: COM-Port: error-cluster - Freddy - 01.03.2017 10:06

Hallo BEAM,

Noch ein paar Anmerkungen.

Der Fehler Cluster Zeigt bei einem Fehler wie GerdW schon schrieb immer rot für Fehler und grün für kein Fehler. Aber true im Fehler Cluster bedeutet ein Fehler gefunden. Das hat mich am Anfang auch immer etwas irritiert. Schließlich ist true immer "Gut" und false immer "Schlecht" aber es kommt dabei auf die Fragestellung an und der Fehler Cluster ist eben aktive (true) wenn ein Fehler auftritt.

Wenn Du eine COM Schnittstelle auswählst, die auf Deinem Rechner nicht vorhanden ist, wird immer ein Fehler schon bei der Initialisierung ausgegeben.

Wenn Du eine COM Schnittstelle verwendest, die auf dem Rechner vorhanden ist aber nicht angeschlossen. Kann man diese initialisieren(sie ist ja da). Man kann was schreiben, denn es werden bei dem Beispiel in der Initialisierung die Handshake - Steuerung abgeschaltet. Also schreibt das System in eine offene Leitung daher kein Fehler.

Die Bytes Abfrage ist bei "keinem Byt vorhanden" auch ok. Daher auch hier kein Fehler.

Beim lesen kommt eine Warnung weil nichts zu lesen ansteht.

Die Auswertung der "*IDN?" machen die VI für die serielle Schnittstelle nicht, dass musst Du selber machen.


Gruß
Freddy


RE: COM-Port: error-cluster - GerdW - 01.03.2017 10:31

Hallo Freddy,

Zitat:Schließlich ist true immer "Gut" und false immer "Schlecht"
Das ist eine ziemlich problematische Aussage!
Wieso soll ein TRUE etwas "Gutes" bedeuten, wenn man damit Fehler signalisiert?

Anderes Beispiel: an Logik-ICs findest du gerne mal Pins, die mit /CS (ChipSelect) oder /EN (Enable) bezeichnet sind. Und der Slash davor markiert die invertierte Logik: das IC wird also bei einem FALSE selektiert oder enabled…


RE: COM-Port: error-cluster - jg - 01.03.2017 11:01

Um die Verwirrung vollständig zu machen: Es gibt auch noch das Level "Warnung": Errorcode <> 0 & Error = FALSE.

Gruß, Jens


RE: COM-Port: error-cluster - Beam1 - 06.03.2017 10:29

Hallo, Freddy,

Endlich mal einer, der eine gut hilfreiche Antwort gibt. Danke.

(01.03.2017 10:06 )Freddy schrieb:  Der Fehler Cluster Zeigt bei einem Fehler wie GerdW schon schrieb immer rot für Fehler und grün für kein Fehler. Aber true im Fehler Cluster bedeutet ein Fehler gefunden. Das hat mich am Anfang auch immer etwas irritiert. Schließlich ist true immer "Gut" und false immer "Schlecht" aber es kommt dabei auf die Fragestellung an und der Fehler Cluster ist eben aktive (true) wenn ein Fehler auftritt.

Ja, sehr verwirrend. Bei einem Gerät, was ich am USB-Port hängen habe, ist es nämlich genau anders herum. Da zeigt der Fehler-Cluster beim Fehler ein rotes Kreuz und bei "no error" ein grünes Häkchen. Ich weiß aber nicht, ob das eine Eigenart der mitgeliefeten LabView-Treiber ist oder ob es bei USB-Geräten generell anders ist.

Zitat:Wenn Du eine COM Schnittstelle verwendest, die auf dem Rechner vorhanden ist aber nicht angeschlossen. Kann man diese initialisieren(sie ist ja da). Man kann was schreiben, denn es werden bei dem Beispiel in der Initialisierung die Handshake - Steuerung abgeschaltet. Also schreibt das System in eine offene Leitung daher kein Fehler.

Die Bytes Abfrage ist bei "keinem Byt vorhanden" auch ok. Daher auch hier kein Fehler.

Aha. Das war mir nicht bekannt.

Zitat:Beim lesen kommt eine Warnung weil nichts zu lesen ansteht.

Und warum nur eine Warnung und nicht ein Fehler? Ich finde das ziemlich unlogisch.

Diese Warnung läßt sich ja auch nicht auswerten (z.B. mit "Error-Code ungleich 0"), weil beim "VISA Read" immer eine Warnung ausgegen wird (mit zwei verschiedenen Geräten und unterschiedlichen Befehlen getestet), und zwar immer wegen "VISA: (Hex 0x3FFF0006) The number of bytes transferred is equal to the requested input count. More data might be available." Das stimmt aber nicht. Es werden alle Daten korrekt gelesen und im Response-Feld angezeigt. Ich habe testweise mal versucht, "bytes cout" per Konstante an das VI "VISA Read" zu übergeben und den Wert schrittweise zu erhöhen. Es werden aber keine weiteren Zeichen gelesen, im Gegenteil, es kommt dann ein Timeout. Also ist der Wert, den dieses "Bytes at Port" liefert, korrekt. Woher dieser Wert allerdings stammt, ist mir unklar. Ich kann nur erkennen, daß dieser je nach zuvor gesendeten Befehl dynamisch angepaßt wird.

Zitat:Die Auswertung der "*IDN?" machen die VI für die serielle Schnittstelle nicht, dass musst Du selber machen.

Ok, also ist die Fehlerleitung hier völlig witzlos und ich muß mir was anderes ausdenken. Es geht ja um den Anschluß eines ganz bestimmten Gerätes. Also könnte ich nach "*IDN?" fragen und wenn dann nicht der für das Gerät korrekte Antwortstring kommt, lasse ich eine individuelle Fehlermeldung ausgeben ohne die Fehlerleitung und einen Fehler-Cluster zu nutzen?