LabVIEWForum.de - VI funktioniert und EXE nicht

LabVIEWForum.de

Normale Version: VI funktioniert und EXE nicht
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Seiten: 1 2 3
Hallo Mostro,

Zitat:normalerweise sollte sobald ein Fehler auftritt der Balken auf dem Frontpanel, welches ich zuerst angehangen hatte, auf nicht in Ordnung springen.
Dein subVI zur seriellen Kommunikation liest einen String und vergleicht ihn mit einer Konstante (aka Case-Struktur). Wenn Vergleich erfolgreich, dann kein Fehler.

Ergo:
Was liest dieses subVI ein, wenn dir in der EXE ein Fehler angezeigt wird? Wie sieht der ResponseString aus? Was liefert BytesAtPort (welches hier eben falsch verwendet wird)? Gibt es Fehler bei der seriellen Kommunikation?
Bitte Debugging betreiben!
Hallo GerdW

ich werte mal alles durchtesten und gucken ob ich so den Fehler finde.
Einen anderen ähnlichen Fehler habe ich bereits hierdurch gefunden.

Danke.

Gruß Moritz
Guten Morgen,

ich bin dem Problem auf der Schliche. Ich habe jetzt alles durchgetestet. Wenn ich jetzt eine EXE erstelle nicht nur von der Benutzeroberfläche sondern auch das SubVI mit dem Case drin mit als EXE erstelle bekomme ich den Fehler nicht, sobald ich die EXE vom SubVI schließe habe ich den Fehler wieder.

Um es erstmal zu lösen, gibt es die Möglichkeit, das ich die EXE vom SubVI öffne diese aber nicht angezeigt wird bzw. ausversehen geschlossen wird. Also dass diese quasi im Hintergrund läuft?

Und nicht einfach nur bei Ausführung minimiert, sodass man immer beide schließen muss wenn man fertig ist.

Gruß MoritzDais
Hallo Moritz,

Zitat:Wenn ich jetzt eine EXE erstelle nicht nur von der Benutzeroberfläche sondern auch das SubVI mit dem Case drin mit als EXE erstelle bekomme ich den Fehler nicht, sobald ich die EXE vom SubVI schließe habe ich den Fehler wieder.
Hier gibt es wohl größere Missverständnisse!
Wenn du eine EXE von deinem MainVI erzeugst, dann ist das subVI als Teil des MainVI automatisch in der EXE mit drin. Du kannst das subVI nicht "auch" als EXE erstellen - und auch nicht die "EXE vom subVI" schließen…

Zitat:Um es erstmal zu lösen, gibt es die Möglichkeit, das ich die EXE vom SubVI öffne diese aber nicht angezeigt wird bzw. ausversehen geschlossen wird. Also dass diese quasi im Hintergrund läuft?
Wie "öffnest" du die "EXE vom subVI"? Ist das ein eigenständiges Programm, welches du per Doppelklick aus dem Windows-Explorer heraus startest?

Zitat:Und nicht einfach nur bei Ausführung minimiert, sodass man immer beide schließen muss wenn man fertig ist.
Auch das ist mir völlig unklar: wenn dein MainVI beendet wird, sind alle subVIs automatisch mit beendet.
Wieso musst du hier zwei EXE starten und getrennt beenden?

Wieso musst du überhaupt das Frontpanel des subVIs sichtbar machen? (VI-Einstellungen!)

Das ist der Punkt, wo man mit einem ZIP deines kompletten LabVIEW-Projektes deutlich konkretere Hilfe bieten könnte als nur durch Anschauen irgendwelcher Bilder mit Teilen deines Codes. Denk mal drüber nach! (Für mich bitte für LV2017 speichern, Edit->Save for previous.)
Hallo Gerd,

ich habe nun mal das Projekt als Zip angehangen. Ich hoffe mir kann geholfen werden.

Zur Erklärung, die HauptVI liegt im Unterordner Sequenzer und ist dann benannt HC Prüfsystem. Das ist auch das VI welches ich als EXE ausführbar machen möchte.

In diesem Fall ist es aber so, dass mein anfangs geschildeter Fehler auftritt wenn ich nur das VI zur EXE hinzufüge.
Der Fehler tritt aber nicht auf wenn ich zu der EXE zusätzlich, auch im Unterordner Sequenzer, die VI Prüfschrittsequenzer hinzufüge.

Das ist soweit eigentlich kein Problem. Nur wenn ich die EXE starte möchte ich keine zwei geöffneten VIs haben sondern nur die Benutzeroberfläche, daher kam die Frage ob man das VI Prüfschrittsequenzer bei gestarteter EXE quasi im Hintergrund laufen lassen kann, ohne dass man es in der Taskleiste sieht und wenn man fertig ist es schließen muss?

Gruß Moritz
Hallo Moritz,

so langsam scheine ich zu begreifen, was du da vorhast…

Wieso bezeichnest du den Prüfsequencer als subVI, wenn er im HCPrüfsystem überhaupt nicht als subVI aufgerufen wird?
Warum wird der Prüfsequenzer nicht als subVI im Prüfsystem eingebunden?

Und überhaupt: beide VIs sind viel zu groß (im Blockdiagramm), viel zu unübersichtlich und lassen jede Programmstruktur vermissen (oder verbergen diese aufgrund ihrer schieren Größe sehr geschickt).
Ich würde das komplette Programm nochmal neu erstellen und von Anfang an auf eine klare Programmstruktur achten!

Solange du beide VIs als quasi-MainVIs in deine EXE einbindest, werden auch beide immer geöffnet und gestartet. Geht halt nicht anders bei dieser Machart…

Zitat:Der Fehler tritt aber nicht auf wenn ich zu der EXE zusätzlich, auch im Unterordner Sequenzer, die VI Prüfschrittsequenzer hinzufüge.
In welcher der drei BuildSpecs hast du das versucht? Ich finde das dort nirgends…
Hallo Gerd
Zitat:In welcher der drei BuildSpecs hast du das versucht? Ich finde das dort nirgends…

In meineAnwendung dürfte es drin sein. Das Problem tritt auch erst dann auf, wenn man in der Benutzeroberfläche über manuelle Eingabe oben, die Artikelnummer "test can" eingibt. Dann öffnet sich die Prüfsequenz und es soll eine Nachricht über CAN gesendet werden. Das funktioniert solange auch der Prüfschrittsequenzer in der EXE gestartet ist. Schließt man diesen oder öffnet ihn gar nicht erst ergibt es den Fehler, bzw es wird "nicht in Ordnung" angezeigt.


Zitat:Wieso bezeichnest du den Prüfsequencer als subVI, wenn er im HCPrüfsystem überhaupt nicht als subVI aufgerufen wird?
Warum wird der Prüfsequenzer nicht als subVI im Prüfsystem eingebunden?

Der Prüfschrittsequenzer wird über einen Call by reference aufgerufen.

Und tatsächlich ja die VIs sind viel zu groß und unübersichtlich. Aber wie immer fängt man an und irgendwann ist es aufeinmal so. Aber wird demnächst noch aufgeräumt.

Gruß Moritz
Drei Sachen fallen mir ein.
1. Wenn die IDE Version noch aktiv ist, blockierst Du eventuell die COM Schnittstelle und die EXE kann nicht zugreifen.
2. Du hast in LabVIEW eingestellt, dass die serielle Schnittstelle automatisch getrennt wird. Das kann die EXE nicht.
3. Die Einstellungen im Compiler sollten wie auf dem Bild sein.

Gruß
Freddy
Hallo Moritz,

Zitat:Das Problem tritt auch erst dann auf, wenn man in der Benutzeroberfläche über manuelle Eingabe oben, die Artikelnummer "test can" eingibt.
Wow, da ist das "subVI" aber gut versteckt. Insbesondere, weil noch nichtmal ein aussagekräftiges Icon vergeben wurde…

Zitat:Dann öffnet sich die Prüfsequenz und es soll eine Nachricht über CAN gesendet werden. Das funktioniert solange auch der Prüfschrittsequenzer in der EXE gestartet ist.
Auch hier gilt wieder: wo fragst du eventuell auftretende Fehler am CallByReference ab? Es fehlt ein Errorhandling!
Dieses subVI muss dann aber auch in der EXE enthalten sein: dazu sollte es in der BuildSpec bei "Always included" hinzugefügt werden.
Hallo Gerd und Freddy,

@Freddy Punkt 1 hilft leider nicht und Punkt 3 habe ich so ... ich muss gestehen Punkt 2 versteh ich nicht was du meinst.


@Gerd wie kann ich das am Besten mit einbringen?

Gruß Moritz
Seiten: 1 2 3
Referenz-URLs