Fehlerbehandlung in SubVIs
|
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!
17.05.2011, 11:41
Beitrag #4
|
M Nussbaumer
Zarathustra
   
Beiträge: 654
Registriert seit: Sep 2009
2009 SP1
2009
EN
6300
Schweiz
|
RE: Fehlerbehandlung in SubVIs
(17.05.2011 10:47 )BerndD schrieb: Hallo,
danke Marc, ich bin zwischenzeitlich weiter gekommen und habe den Fehlerstatus an eine Case-Struktur angeschlossen. Wobei ich einfach mit dem Verbindungswerkzeug ein Abzweig zum Case-Eingang gemacht habe. LV scheint dann automatisch die Signal-Leitung aus dem Cluster zu nehmen.
Leider funktioniert es nicht. Wenn ein Fehler von meiner DLL zurückgeliefert wird, gibt es folgende Probleme:
1. Wenn ich das blinken des Debuggers richtig interpretiere, werden die Ausgabeparameter weiter propagiert, bevor der Rückgabewert (der die Fehlernummer enthält) ausgewertet wird.
Du kannst die Wertezuweisung nochmal in eine Case-Struktur setzten und dort nur im "Nicht-Fehlerfall" die neuen Werte setzen
2. Das Status-Signal im Fehlercluster wird nicht gesetzt. Oder setzt die Dialogausgabe des Fehlers den Fehlerstatus zurück? Wenn ja, wie kann man das verhindern?
Prinzipiell wird der Fehlerstatus nicht ohne entsprechende Programmierereinwirkung zurückgesetzt, jedoch könnte es sein das es sich bei der Fehlermeldung um eine Warnung handelt... Wann tritt der Fehler dann eigentlich auf? Wenn ich das Programm starte und keine Karte habe?
Du kannst auch den Fehlercluster nicht von Errorausgang sondern direkt von der DLL weiterführen, falls du den Verdacht hast, dass dein Dialog dir den Status zurücksetzt (was er eigentlich nicht machen sollte)
3. Da der Fehlerstatus nicht gesetzt wird, wird der 2. DLL-Aufruf ausgeführt. Danach tritt ein weiteres Problem auf: LabView behauptet in ein Fehlerdialog, dass der zurückgegebene Fehler nicht definiert sei. Das kann eigentlich nicht sein, weil ich die Fehlerbehandlung bei dem beiden Aufrufen gleich aufgebaut habe. Allerdings fällt mir auf, dass beim 2. „General Error Handler.vi“ am Fehlercode-Eingang ein rotes Dreieck ist. Was hat das zu bedeuten?
Dieses rote Dreieck zeigt an, dass eine Datentypenumwandlung stattfindet, in deinem Programm von U32 auf I32
Ich habe ein Bild der vi und das Projekt angehängt. Für die enthaltene DLL habe ich ein Virencheck bei Virustotal.com durchgeführt und das Protokoll als PDF beigelegt. Hier die MD5 Prüfsumme:
8133252f5978f6f4658baa4e92d6c7b0 *pei2c.dll
Vielen Dank im Vorraus.
Bernd
Hoffe das ganze hilft dir weiter!
Falls was unklar ist darfst du natürlich gerne nachfragen
Gruss Marc
|
|
|
| |
Nachrichten in diesem Thema |
RE: Fehlerbehandlung in SubVIs - M Nussbaumer - 17.05.2011 11:41
|