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!
04.10.2007, 15:51 (Dieser Beitrag wurde zuletzt bearbeitet: 08.12.2007 13:42 von jg.)
Hallo Leute,
ich habe da mal ein kleines Problem. Mein Haupt VI ist ja soweit ok. Problem entsteht erst wenn ich es auf eine exe-Datei kompeliere. Wenn ich dann diese exe-Datei habe und sie starte, führt das Programm sofort die ganzen Aktionen aus ohne meine Eingaben abzuwarten. Natürlich entsteht dabei ein Fehler!!!
Meine Frage nun:
Kann ich die exe starten ohne das es gleich danach das ganze Programm herunterrattert???
Ich stelle mal mein .zip Datei rein. Das VI "ag33220A VI.vi" ist mein Haupt VI.
Mal ganz allgemein, das könnte man schon ändern, aber das ich doch nicht Sinn und Zweck einer Exe.
Eine Exe SOLL doch selber starten (und auch sauber beendet werden)! Ansonsten verfehlst du hier das Ziel eines eigenständigen Programmes. Ich will doch nicht, dass erst nur das FP geöffnet wird, dann Anwender Eingaben macht, und dann auf den Run-Button in der Menü-Leiste drückt.
Ohne jetzt auf deinen Code zu schauen, gehe ich jetzt mal davon aus, dass du nur eine gescheite Eingabe-Schleife mit entsprechender Benutzerführung brauchst, und dein Problem ist gelöst.
MfG, Jens
Wer die erhabene Weisheit der Mathematik tadelt, nährt sich von Verwirrung. (Leonardo da Vinci)
!! BITTE !! stellt mir keine Fragen über PM, dafür ist das Forum da - andere haben vielleicht auch Interesse an der Antwort!
' schrieb:Mal ganz allgemein, das könnte man schon ändern, aber das ich doch nicht Sinn und Zweck einer Exe.
Eine Exe SOLL doch selber starten (und auch sauber beendet werden)! Ansonsten verfehlst du hier das Ziel eines eigenständigen Programmes. Ich will doch nicht, dass erst nur das FP geöffnet wird, dann Anwender Eingaben macht, und dann auf den Run-Button in der Menü-Leiste drückt.
Ohne jetzt auf deinen Code zu schauen, gehe ich jetzt mal davon aus, dass du nur eine gescheite Eingabe-Schleife mit entsprechender Benutzerführung brauchst, und dein Problem ist gelöst.
MfG, Jens
Hallo Jens,
erstmal Danke für die Antwort.
Mein Programm ist zu einem bestimmten Gerät geschrieben. Problem ist jetzt, wenn ich die exe öffne, überprüft er sofort den Standartanschluss (USB). Wenn da das Gerät nicht dranhängt, kommt gleich ein Fehler. Es muss doch machbar sein erst den Anschluss zu wählen bevor das Programm die Abfrage startet. Kann man nicht eine Holdfunktion einbauen???
Wie meinst du das mit der Eingabe-Schleife? Ist das so eine Leerlaufschleife? Kannst ein VI reinstellen, welches so eine Schleife hat? Ich würde gerne sehen, was du damit genau meinst.
MfG Joe
PS: Bin noch recht neu auf dem Gebiet, verzeiht mir also diese Anfängerfragen.
Jens meint wohl wie schon so oft eine "State Machine" (such danach hier im Forum, da findest du mehr Einträge als die lieb sein wird).
und die States könnten dann folgende Reihenfolge haben:
1) Programm starten und warten, bis Anschluss gewählt wurde
2) Gerät initialisieren
3) dein Hauptprogramm ausführen oder was auch immer
...
Ende -2) Gerät sauber von der Applikation trennen
Ende -1) alle VIs die sonst noch laufen sauber beenden
Ende ) Applikation schliessen
somit bist du auf der sichern Seite, dass alles immer optimal geöffnet und beendet wird.
Du kannst mit einer StateMachine noch die Fehler abfangen, die auftreten (zB wenn kein Gerät an gewähltem Port hängt etc)
ich hoffe einen Anstoss in die richtige Richtung gegeben zu haben
Gruss,
Christian
In theory, there is no difference between theory and practice; In practice, there is.
Hallo nochmal,
also das mit der State Machine verstehe ich nicht so ganz. Aber egal. Ich habe das nun anders behoben:
Da ich ja am Anfang eine Schnittstelle für mein Gerät wählen muss, habe ich nun eine Schnittstelle mit 3 Leerzeichen eingefügt und es mit einem "Stop"-Symbol verbunden. Damit sieht das Feld nun am Anfang leer aus und die Application stoppt.
Diese Lösung finde ich in sofern gut, denn falls ich keine Schnittstelle wähle macht auch das Programm nichts. Wenn ich dann eine falsche Schnittstelle wähle, wird dieses als Fehler abgefangen und dementsprechend reagiert.
Trotz danke für die Antworten.
Ich werde mich auf jeden Fall noch über die State Machine informieren. Scheint sehr interessant zu sein.
' schrieb:H. Wenn ich dann diese exe-Datei habe und sie starte, führt das Programm sofort die ganzen Aktionen aus ohne meine Eingaben abzuwarten. Natürlich entsteht dabei ein Fehler!!!
Das Wichtigste ist, mit einer Fehlerbehandlung den Fehler bei fehlendem Gerät abzufangen, so daß das Programm nicht aussteigt.
Ich würde das Programm so machen:
a) wenn Gerät angeschlossen: Keine Meldung, alles OK
b) Gerät nicht angeschlossen: Meldung: "Gerät nicht angeschlossen, bitte anschließen" Während diese Meldung erscheint, wird in einer Schleife fortwährend geprüft, ob es inzwischen angeschlossen ist. Ist das erfolgt, geh es automatisch im Programm weiter, ohne daß noch ein Butten gedrückt werden muß. Wenn es nicht angeschlossen werden kann, sollte es einen Button für den Programmabbruch geben.
.
Ob man das mit einer State-Machine realisiert oder anders, ist dabei egal. obwohl ich das auch für zweckmäßig halte.
Die "State machines" in LabVIEW sind, in andere Programmiersprachen übersetzt, meist nichts weiter als ganz normale Programmablaufpläne mit Verzweigungen. Dort würde sie kein Mensch als "State-machine" bezeichnen, in LabVIEW schon. Damit will ich einerseits sagen, daß die state machines, genau wie diese Ablaufpläne, manchmal unentbehrlich sind, und andererseits, daß es keinen Grund gibt, diesen Dingern besonders ehrfurchtsvoll entgegenzutreten. Es ist alles ganz einfach.