LabVIEWForum.de
Fehler abfangen - Druckversion

+- LabVIEWForum.de (https://www.labviewforum.de)
+-- Forum: LabVIEW (/Forum-LabVIEW)
+--- Forum: LabVIEW Allgemein (/Forum-LabVIEW-Allgemein)
+--- Thema: Fehler abfangen (/Thread-Fehler-abfangen)

Seiten: 1 2


Fehler abfangen - hulk - 21.12.2020 08:08

Da mittlerweile mein Wissen langsam besser wird, habe ich beschlossen mich um die Fehlererkennung zu kümmern. Dies habe ich bisher vernachlässigt.
Eine Idee die ich gefunden habe, ist das registrieren von Fehlern als Event.
Im angehängten Beispiel ist eine Visa ressource (abgerufen im state ini) nicht angeschlossen. Ich hätte vermutet, dass ein Event auslöst.
Tut es aber nicht. Er bleibt im Ini hängen.
Wenn das wieder Think data flow ist, tut es mir leid. Ich tue mich sehr schwer damit und verstehe es hier nicht.
Ziel war es hier anhand des Fehlercodes irgedwann einen state/aktion auszulösen

Gruß
Steffen


RE: Fehler abfangen - Martin.Henz - 21.12.2020 10:11

Hi Steffen,

ich kürze das nicht mit "Think Dataflow" ab. Da ich mir die Frage stelle, was du denn meinen könntest, was in dem Case "INI" mit dem Fehler passiert, führt mich zu etwas ganz Grundsätzlichem:

Was macht ein VI oder eine Funktion, wenn am Eingang ein Fehler in Form eines Error Clusters anliegt? Antwort: Es macht einfach nichts.
Was also tut "Send Notification"? Antwort: Es macht nichts.
Fazit: Du musst irgend etwas tun, damit im Fehlerfall auch irgend etwas passieren kann.

Etwas konkreter: Hänge z.B. den Error Handler einfach hinten an "VISA Open" ran und sende anschließend "EXIT" mittels "Send Notification". So bekommt der Benutzer eine Fehlermeldung und anschließend wird das Programm beendet. Die Leitung des Error Cluster zwischen "VISA Open" und "Send Notification" musst du natürlich weglassen.


RE: Fehler abfangen - th13 - 21.12.2020 10:20

Du musst den VISA-Fehler auch behandeln, d.h. prüfen, ob am Fehlerausgang ein Fehler auftritt. Im einfachsten Fall so:
[attachment=61510]
Du kannst auch den Errorcode auswerten und je nachdem verschiedene Meldungen ausgeben.

Ein Tipp noch bzgl. Fehlerhandling: man sollte immer den Originalfehler (hier der VISA-Fehler) anzeigen oder zumindest loggen, das erleichtert das Finden von Fehlerursachen deutlich.


RE: Fehler abfangen - Freddy - 21.12.2020 11:56

Hallo Steffen,

Dein Event muss aber schon irgendwie durch den "Error (Ausgang)" gestartet werden. Durch den "Error (Eingang) kein Fehler" wird Auf keinen Fall ein Fehler gemeldet. es sei den die Benutzerereignisse währen falsch. Den Eintrag im Event ändern.

Die INI Fehlerleitung würde ich nicht ändern, da eine Initialisierung ohne VISA nicht funktioniert.

Gruß
Freddy


RE: Fehler abfangen - hulk - 21.12.2020 12:10

ich hatte es zu Anfang so ähnlich versucht.
Nur das funktionierte auch nicht. Daher klang die Idee mit dem Event interessant.
Aktuell (in der Verständnisphase) reicht es mir, wenn das Programm in exit springt und sich beendet.
Das tut es aber nicht. Im Anhang ist ein Bild was mit dieser Variante geschieht.
Das exit wird ausgelöst. Aber das Programm insgesamt beendet sich nicht. Statt dessen kommt die besagte Fehlermeldung.

Gruß
Steffen


RE: Fehler abfangen - Martin.Henz - 21.12.2020 12:15

Hallo Freddy,

(21.12.2020 11:56 )Freddy schrieb:  Die INI Fehlerleitung würde ich nicht ändern, da eine Initialisierung ohne VISA nicht funktioniert.

Lass doch dem Steffen seine Freiheit :-)

Wenn er diesem Ratschlag folgt und das so macht wie unten, dann ist es schlicht und ergreifend falsch.

[attachment=61513]

Nachtrag: Da ist es ja schon (schneller als meine Antwort) ... und es ist falsch den Error Cluster zu verbinden ...


RE: Fehler abfangen - Martin.Henz - 21.12.2020 12:32

Hi Steffen,

lass die Verbindung des Error Clusters zu "Send Notofication" im Fehlerfall weg (sonst wird da nichts gesendet).
Und irgendwie ist es vermutlich sinnvoll, dem Anwender mitzuteilen, welcher Fehler aufgetreten ist. Um bei deinem
Ansatz zu bleiben, irgendwie so:

[attachment=61514]


RE: Fehler abfangen - hulk - 21.12.2020 13:27

Hm..Danke für die Bemühungen.
Ich habe mal die Error-Verbindung zum Notifier getrennt.
Jedoch ändert das nichts. Er sendet den state nicht ab. Es kommt ziemlich genau dieselbe Fehlermeldung.

Gruß
Steffen


RE: Fehler abfangen - Martin.Henz - 21.12.2020 13:56

Hallo Steffen,

du machst bei EXIT auch nichts außer, dass zwei von den drei While-Schleifen beendet wird. :-)

Momentan zumindest sollte es doch im Fehlerfall so sein, dass beim Start des Programms festgestellt wird, dass das Gerät nicht vorhanden ist, der Benutzer eine Fehlermeldung bekommt. Anchließend wird das Programm wieder beendet. Du musst dann auch dafür sorgen, dass nach EXIT dein Programm auch tatsächlich vollständig beendet wird.


RE: Fehler abfangen - hulk - 21.12.2020 14:12

Doch dataflow...(unabhängig von der Meldung)
In meinem Universum schickte ich die Meldung raus und die ging in das event rein und sollte dann die trues zum Beenden verteilen.
Dem scheint aber nicht so zu sein, so dass ich nur die while Schleife mit den states beende.

Aber war dann mein Ansatz vom Wochenende nicht besser, einen Fehlerfall als event zu triggern? Dann würde ich alles beenden.
Nur warum funktionierte diese Variante nicht?