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.

Discussions au sujet de NI LabVIEW

annuler
Affichage des résultats de 
Rechercher plutôt 
Vouliez-vous dire : 

Bar de progression pour chargement executable

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

0 Compliments
Message 1 sur 8
4 916 Visites

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

https://decibel.ni.com/content/blogs/labview-news-english/2014/02/17/making-your-splash-screen-groov...

 

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+

 

 

banniere Luc Livre NXG Champion.png

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

Message 2 sur 8
4 875 Visites

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)

0 Compliments
Message 3 sur 8
4 870 Visites
Merci de vos reponses, un vi pour illustrer vos exemples ?
0 Compliments
Message 4 sur 8
4 854 Visites

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

0 Compliments
Message 5 sur 8
4 842 Visites

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]

Message 6 sur 8
4 834 Visites

Ouadji,

 

est-ce normal que j'obtienne ceci lorsque j'execute le main ? 

Sans titre2.png

0 Compliments
Message 7 sur 8
4 743 Visites

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.

 

 

Message 8 sur 8
4 737 Visites