' schrieb:Hallo,
auf dem Rechner auf dem das Programm läuft ist nur das Programm, LabVIEW Runtime und DAQmx Runtime.
Wie kann ich LabVIEW Runtime und DAQmx Runtime beenden wenn ich die *.exe beende?
Ich habe inzwischen mit NI telefoniert und Tips bekommen aber der Rechner ist beim Kunden und das Programm ist noch nicht repariert.
Für DAQmx 8.6 gibt es eine Runtime 5 damit hat es auf dem Programmierrechner und auf dem Zielrechner gefunzt.
Nach Installation von LV 8.5.1 mit DAQmx 8.7(Ohne Runtime 5 -- nur noch Runtime 4) ging es nur noch auf dem Programmierrechner.
Nach der Installation einer neueren Version (Tip von NI) DAQmx 8.7.1 (sollte wieder Runtime 5 enthalten-- dem war nicht so) ging es noch nicht.
Es gibt eine extra DAQmx 8.7.1 Runtime 5 aber da muss man alles von Hand einbinden.
In einem anderen Forum wurde geraten auf DAQmx 8.6 zurückzugehen (auch wegen der geringeren Größe von Runtime 5 gegenüber Runtime 4).
DAQmx 8.7 war nicht deinstallierbar weil LabVIEW sagte es ist eine höhere Version installiert (8.7.1) die aber nicht in LabVIEW angezeigt wurde.
NI gab mir den Link zu MSIBlast (Programm zum Deinstallieren von NI-Komponenten) dann konnte ich DAQ deinstallieren.
Danach ging nichts mehr.
Ich habe LV komplett deinstalliert und LV8.1 neuinstalliert. Alles läuft wieder -- Ich habe ein neues Installationsprogramm + LabVIEW Runtime + DAQmx 8.6 Runtime 5 gemacht und muss es aber auf dem Zielrechner noch testen.
Bugs innerhalb der DAQmx mal weggelassen denke ich dass gerade Quit LV das eigentlich Problem sein könnte. Wenn Du in Deiner Applikation DAQmx ansprichst öffnest Du unweigerlich DAQmx Resourcen. Wenn Du Dich nun irgendwann mal in Deiner Applikation entschliesst dass es genug gewesen ist und einfach Quit LV aufrufst hast Du eventuel noch DAQmx Resourcen offen, die erst abgeschlossen werden sollten. Zwar ist DAQmx so programmiert dass es grundsätzlich versucht nicht ordnungsgemäss abgeschlossene Resourcen selber abzuschliessen wenn die Applikation beendet wird aber DAQmx besteht aus einer Vielzahl an Untertreibern und ein einziger Bug in einem davon kann verursachen dass sich DAQmx beim dermassen forcierten Abschliessen aufhängt.
Deshalb ist es grundsätzlich wichtig um beim Beenden der Applikation dafür zu sorgen dass alle parallelen Loops innerhalb der Applikation sich ordentlich beenden und dass alle irgendwann geöffneten Resourcen auch garantiert geschlossen sind bevor Du überhaupt daran denkst Quit LV aufzurufen. Wie eher erwähnt ist Quit LV nicht mal nötig. Das Letzte VI das sein Frontpanel schliesst macht grundsätzlich beinahe dasselbe.
Vielleicht denkst Du jetzt: Aber das ganze Resourcetracking um sicherzustellen dass alles ordentlich geschlossen ist bevor ich meine Applikation beende ist eine Heidenarbeit. Nun wenn Du intelligent programmierst, sprich zumindest in Ansätzen objektorientiert mittels Intelligenter Actions Engines auf der Basis von LV2 Style Global Variables, ist das alles nicht so schlimm. Und obwohl die NI Treiber selber in den meisten Fällen sehr tolerant darin sind wenn die Applikation sich beendet ohne alle Resourcen ordentlich abgeschlossen zu haben ist das nicht immer 100% perfekt und kann man das von den meisten Treibern anderer Hersteller mit absoluter Garantie schon mal nicht sagen.
Rolf Kalbermatter