LabVIEWForum.de
Infofenster bei Applikationsstart - Druckversion

+- LabVIEWForum.de (https://www.labviewforum.de)
+-- Forum: LabVIEW (/Forum-LabVIEW)
+--- Forum: LabVIEW Allgemein (/Forum-LabVIEW-Allgemein)
+--- Thema: Infofenster bei Applikationsstart (/Thread-Infofenster-bei-Applikationsstart)

Seiten: 1 2 3 4


RE: Infofenster bei Applikationsstart - rolfk - 13.06.2012 22:46

(13.06.2012 14:15 )GT123 schrieb:  Hallo anbei besten Dank Euch beiden,
eigentlich denke ich das ich die Thematik verstehe, aber im splashscreen hängt die Fortschrittsleiste beim main.vi laden immer noch.
Anbei meine BD. Was ist denn da nicht i.O.???

Es ist äusserst unschön dass Du in Deinem Main VI eine Referenz zum Splashscreen Vi öffnest um dieses zu aborten. Der Umstand dass Du das Main VI Frontpanel öffnest signalisiert dem Splashscreen VI ja bereits, dass Du jetzt soweit bist um die eigentliche Arbeit selber weiterzuführen und damit kann sich das Splashscreen VI ganz einfach selber beenden. Und nein dazu braucht es kein Abort, einfach alles aufräumen was noch aufzuräumen ist und dann das eigene Frontpanel schliessen et voila!

Wie macmarvin ja schon erläuterte führt das Open VI Reference VI alle Arbeit im UI Thread aus. Das ist derselbe Thread der auch für das UI Update benützt wird. Solange eine Open VI Reference also beschäftigt ist, macht LabVIEW keine UI Updates. Das ist manchmal lästig aber eben einfach nicht anders. Alternativen um Open VI Reference nicht im UI Thread auszuführen wurden oft gefordert und die LabVIEW Entwickler haben sicher schon öfters nach Möglichkeiten dazu gesucht, aber das Laden einer VI Hierarchie ist eine delikate Angelegenheit die nicht einfach durch andere Operationen beliebig unterbrochen werden darf da LabVIEW während dem Laden unzählige globale Tabellen konstant updaten muss, und wenn es dass nicht in einem exclusiven Thread tut der durch jemanden anderen jederzeit unterbrochen werden kann, dann würdest Du kein einziges komplexes Programm mehr in den Speicher laden können ohne dass LabVIEW sich früher oder später mit einer Exception verabschiedet. Natürlich könnte LabVIEW dazu auch eine Critical Section bemühen aber das Problem ist dass diese globalen Tabellen and mehreren Stellen in LabVIEW angesprochen werden die teilweise wieder andere kritische Abhängikeiten haben, und die Kombination von mehreren Critical Sections hat eine grosse Gefahr eines sogenannten Priority Invresion Locks, wo zwei Teile sich gegenseitig blockieren weil jeder darauf wartet dass der andere die Resource wieder freigibt.


RE: Infofenster bei Applikationsstart - GT123 - 14.06.2012 05:35

Guten morgen und besten Dank Euch beiden,

ja, FP schliesen müsste reichen, bin mir hierbei nur nicht sicher (gewesen) ob nur das FP sich schliesst und im Hintergrund das BD weiter läuft... sehe es wurde ja bereits erwähnt :-)
Zitat:In dem Moment wo kein Frontpanel mehr vorhanden ist, wird eine LabVIEW Applikation abgebrochen

ok, d.h. ich kann mit den Vi Server arbeiten wie ich will, das akualisieren des UI ist währendessen immer blockiert.

Dann denke ich doch wieder an die exe Lösung...
in Splashscreen.vi mit system exec.vi die main.exe starten (wait until done=F),
dann muss ich aber in einer Schleife abfragen ob die main.exe das FP geöffnet hat.
Nur, wie könnte ich das Abfragen "FP einer exe geöffnet" realisieren?


RE: Infofenster bei Applikationsstart - rolfk - 14.06.2012 12:12

(14.06.2012 05:35 )GT123 schrieb:  Guten morgen und besten Dank Euch beiden,

ja, FP schliesen müsste reichen, bin mir hierbei nur nicht sicher (gewesen) ob nur das FP sich schliesst und im Hintergrund das BD weiter läuft... sehe es wurde ja bereits erwähnt :-)
Zitat:In dem Moment wo kein Frontpanel mehr vorhanden ist, wird eine LabVIEW Applikation abgebrochen

ok, d.h. ich kann mit den Vi Server arbeiten wie ich will, das akualisieren des UI ist währendessen immer blockiert.

Dann denke ich doch wieder an die exe Lösung...
in Splashscreen.vi mit system exec.vi die main.exe starten (wait until done=F),
dann muss ich aber in einer Schleife abfragen ob die main.exe das FP geöffnet hat.
Nur, wie könnte ich das Abfragen "FP einer exe geöffnet" realisieren?

Nur über VI Server und dazu musst Du in Deiner Main den VI Server über TCP konfigurieren. Dazu muss man entsprechende Einträge in die <mymain>.ini Deiner Main app machen und dann muss man im Splashscreen zuerst eine Application Reference zu dem "Remote" aufbauen (ja remote auch wenn die Applikation auf dem gleichen Rechner läuft) und dann kann mandiese an Open VI Reference übergeben, dass das weiss welche Instanz kontakiert werden soll. Aber gib Windows etwas Zeit um die exe zu laden und zu starten. Wenn Du gleich nach dem System exe probierst um die Application Reference zu öffnen, hat Windows noch nicht mal das Executabel geladen, geschweige dann dass dieses Zeit hatte um sich zu initialisieren und den VI Server aufzustarten.

Aber ehrlich, so viel Liebesmühe wegen einer kleinen Fortschrittsanzeige!!! Pack Dir irgendwo ein GIF File das etwas Animiertes darstellt und importiere das ins Frontpanel. Animierte Gifs werden bei mir nicht blockiert während des Ladens des Main VIs. Allerdings muss ich auch sagen dass mein Main VI zwar eine Hierarchy von schnell mal 500 bis 1000 VIs enthält, aber das dauert nur Sekunden um das zu laden. Mehr Zeit geht verloren beim Initialisieren der Konfigurationsdaten und der Hardware, aber das geschieht ja nicht mehr in Open VI Reference und blockiert daher im Normalfall auch den UI Thread nicht.


RE: Infofenster bei Applikationsstart - GT123 - 14.06.2012 13:36

Hallo rolfk,
interessant das mit TCP.... aber doch zu aufwendig Big Grin
Das mit dem Gif wäre völlig ausreichend, mehr will ich gar nicht.
Wie kann ich ein gif ins FP einbinden?


RE: Infofenster bei Applikationsstart - rolfk - 14.06.2012 15:08

(14.06.2012 13:36 )GT123 schrieb:  Hallo rolfk,
interessant das mit TCP.... aber doch zu aufwendig Big Grin
Das mit dem Gif wäre völlig ausreichend, mehr will ich gar nicht.
Wie kann ich ein gif ins FP einbinden?

Im Menu eines VIs: Edit->Import File to Clipboard. Danach Edit->Paste.


RE: Infofenster bei Applikationsstart - GT123 - 15.06.2012 05:45

Guten Morgen,
das will nicht so richtig, können nur bestimmte gifs geladen werden?


RE: Infofenster bei Applikationsstart - GT123 - 15.06.2012 06:14

Habe ein anderes gif laden können, wieso mache gehen und einige nicht ist mir nicht klar.
Aber das Gif wird ebenfalls nicht aktualisiert während dem main.vi aufstarten?!?


RE: Infofenster bei Applikationsstart - NWOmason - 15.06.2012 06:15

Es gehen nicht alle.

Versuch mal diese hier:

GIF Animation in LabVIEW
http://digital.ni.com/public.nsf/allkb/8D5E7940947C60B486256E92007F46D0


Beste Grüße,
NWO


RE: Infofenster bei Applikationsstart - rolfk - 15.06.2012 07:06

(15.06.2012 06:14 )GT123 schrieb:  Habe ein anderes gif laden können, wieso mache gehen und einige nicht ist mir nicht klar.
Aber das Gif wird ebenfalls nicht aktualisiert während dem main.vi aufstarten?!?

GIFs können sowohl statische Bilder sein (wie auch JPG und PNG sind) als auch eine Serie von Bildern mit entsprechender Framerate. Ein statisches Bild kann natürlich nur ein einziges Bild zeigen!

Bei mir sehe ich keinerlei Blockierung.


RE: Infofenster bei Applikationsstart - GT123 - 15.06.2012 08:02

Also das gif bewegt sich auf dem FP in der Entw.umgebung.

In der exe beim starten der main.vi über vi Server bewegt es sich nicht mehr, nach dem das main.vi FP offen ist und ganz kurz bevor das splashscreen beendet wird sieht man das gif sich bewegen.