From Friday, April 19th (11:00 PM CDT) through Saturday, April 20th (2:00 PM CDT), 2024, ni.com will undergo system upgrades that may result in temporary service interruption.
We appreciate your patience as we improve our online experience.
From Friday, April 19th (11:00 PM CDT) through Saturday, April 20th (2:00 PM CDT), 2024, ni.com will undergo system upgrades that may result in temporary service interruption.
We appreciate your patience as we improve our online experience.
le 06-26-2015 09:16 AM
Bonjour à tous,
Voila, la question est dans le titre. J'ai crée un executable qui fonctionne très bien mais dont l'affichage de celui-ci est un peu lente. Admettons qu'un opérateur soit un peu " pressé" celui-ci pourrait double cliquer plusieurs fois sur l'icone de mon exe en se disant que le pc n'a pris en compte ces précédents clik par exemple. Le problème c'est que je ne souhaite pas que celui-ci ouvre plusieurs fois mon application. C'est pourquoi j'aimerai après un double clik sur mon icone d'exe que l'on voit une barre de progression indiquant que executable est bien en cour de chargement.
Cordialement
le 06-26-2015 04:31 PM
oui et non. il faut faire un "loader", "splash screen", qui va être le VI "principal", le main. Il va charger dynamiquement le VI, qui est ton ancien Top Level. Tu peux très bien gérer l'avancement, en utilisant un FIFO pour afficher l'état d'avancement : le VI va transmettre par un FIFO l'état +1
https://forums.ni.com/t5/LabVIEW/Help-creating-a-professional-splash-screen-in-LabVIEW/td-p/1061372
https://decibel.ni.com/content/docs/DOC-1086
mais non, car ton IHM va "être bloquée" dès que tu vas faire "Run VI" tant que l'ensemble du code ne sera pas chargé en mémoire. APrès le code va être exécuté, et tu auras l'avancement.
Donc si tu as des problèmes de temps de chargement en mémoire, tu pouras "afficher" le spalsh screen, mais tu n'auras pas de barre d'avancement du chargement en mémoire.
Par contre si l'utilisateur clique 10000 x sur l'exe, il n'y aura qu'un seul exe qui sera chargé (sauf si modification du fichier ini qui permet l'ouverture multi-instances).
A+
Luc Desruelle | Mon profil | Mon blog LabVIEW | Auteur livre LabVIEW : Programmation et applications - G Web
Certified LabVIEW Architect (CLA) & Certified TestStand Developper (CTD) | LabVIEW Champion
MESULOG - LinkedIn site | NERYS - NERYS Group
| directeur CEO MESULOG
| CODIR - NERYS group
le 06-26-2015 05:34 PM
juste une idée ... à chaud.
dans le loader ... une structure Event.
le loader charge le main avec un "call and forget" ....
Dans le loader je crée un "user event" dont je transmets la Ref en paramètre au main
Le loader allume une Led via un "Generate user event"
Quand le main est chargé, sa première fonction sera d'éteindre la Led du loader (le main possède la Ref du user event associé à la structure Event du loader)
Le fait d'éteindre la Led du loader provoquera la fin du code du loader.
Ce n'est pas une barre de progression ... j'ai une Led qui s'allume au début du chargement du main et qui s'éteind quand le main est chargé.
j'ai déjà utilisé des user event "en amont" en passant une Ref de user event.
non ? (à tester ... mais je pense que cela devrait tourner)
le 06-27-2015 03:03 AM
06-27-2015 04:26 AM - modifié 06-27-2015 04:36 AM
ok, voilou ....
basique ... juste pour mettre "en musique" l'idée.
en pièce jointe, un zip (Loader.vi + Main.vi) - LV2014
unzip ... Run Loader ....
La LED affiche "en chargement" .... et après 3 sec "chargé".
La LED est mise ON (en chargement) dans Loader.vi ... et mise OFF (chargé) dans main.vi
06-27-2015 04:49 AM - modifié 06-27-2015 05:17 AM
après réflexion ... je préfère le code ci-dessous.
Cette version évite un éventuel "flop" si "Main.vi" se charge très rapidement
Dans ce cas, le "OFF", généré par Main.vi pourrait en théorie actionner la structure Event avant le "ON" généré par Loader.vi.
Dans ce cas, le "ON" arrivant en 2eme lieu positionnerait la LED à "en chargement" indéfiniment.
La version ci-dessous évite cela ... ce télescopage est impossible
[edit]
dans la structure Event on peut supprimer l'event "timeout" ... inutile"
[/edit]
le 06-29-2015 09:47 AM
Ouadji,
est-ce normal que j'obtienne ceci lorsque j'execute le main ?
le 06-29-2015 11:01 AM
si tu exécutes le "main" tout seul .... oui ... c'est normal.
car la Référence en paramètre d'entrée est inconnue.
Ce VI "main" doit être lancé via le "loader" ....
et dans ce cas, le VI main reçoit en entrée une Référence valide.