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 11-05-2014 05:45 AM
Probablement une question à 10 centimes
contexte :
en fin de code, j'écris un résultat dans un fichier log.
C'est un sous-sous-VI qui s'occupe de ça.
Le fichier log est "écrit" (ou créé, s'il n'existe pas) ... dans le répertoire de ce "sous-sous-VI".
Le soucis survient quand je crée (et que je fais tourner) l'exécutable.
L'application.exe ne retrouve pas le répertoire en question. (erreur code 7)
J'aimerais que ce fichier log soit écrit (ou créé) dans le répertoire de l'exécutable.
mais ... j'aimerais également que le code soit "valable" aussi bien en "mode run", qu'en mode "exécution exe".
J'espère que j'arrive à me faire comprendre ...
En principe, je ne vais jamais jusqu'à l'exe, donc ce "problème" est nouveau pour moi.
En fait j'ai l'impression que toutes les références à des chemins (path) deviennent non valides quand on compile en exe. (?)
Très certainement une question de "débutant_exe" ...
11-05-2014 09:31 AM - modifié 11-05-2014 09:34 AM
hello ouadji,
Pour bien cerner ton pbm : tu utilises le vi "repertoir de l'application"? ou "chemin Vi actuel"? Ou autre chose?
Antoine
le 11-05-2014 09:54 AM
Utilises-tu la fonction "Current VI's path" ?
Celle-ci retourne en effet un chemin différent pour un EXE.
Voici l'un des nombreux articles à ce sujet.
Depuis LV2009, cela peut être contourné en décochant l'option "Use LabVIEW 8.x file layout" dans la catégorie "Advanced" de l'application builder. Voir par exemple ici pour plus de détails.
le 11-05-2014 10:54 AM
j'utilisais "current VI's path" ...
J'ai essayé "application directory" ... sans résultat.
Je vais aller voir de plus près les liens données par JB
merci à vous deux.
le 11-05-2014 06:37 PM
J'ai testé pas mal de choses (au départ du code proposé via le 1er lien de JB)
(différentes petites choses que je n'aime pas danc ce code d'origine ... mais l'idée de départ est bonne)
je m'arrête sur le code ci-dessous (simple et qui semble fiable)
après le "call chain" j'utilise un "delete from array" ... qui me donne le VI racine.
Je fais une recherche sur la présence de la chaine ".exe".
Si je ne la trouve pas, j'utilise la totalité du chemin donné par le noeud "VI-Path", je strip ... et j'ai la racine ou se trouve le VI Main.
Si je la trouve, j'utilise la chaine "before match", je strip ... et j'ai la racine ou se trouve l'exécutable.
PS (pour les tordus comme moi)
cela fonctionne même si le nom du vi ou le nom de l'exécutable contient la chaine ".exe".
Par exemple : toto.exe.vi (VI) ... ou ... toto.exe.exe (exe) ..
le 11-06-2014 03:42 AM
le 11-06-2014 04:23 AM
@Mathieu :
Bonjour Mathieu,
Ce problème est un grand classique !
oui, je m'en doute. Problème "nouveau" pour moi ...
Je n'ai que très rarement compilé jusqu'à l'exécutable. (En ce qui me concerne, je n'en ai pas l'utilité.)
Je ne me rendais pas compte que certaines choses pouvaient parfaitement fonctionner en mode "edit-run" ...
et pas du tout avec l'exécutable.
existe-t-il d'autres "grands classiques" (pièges, non fonctionnements possibles) ... quand on construit un exe ?
le 11-06-2014 05:02 AM
un truc qui me vient à l'esprit, (pas vraiment un piége) : une fois compilé, tu ne peux plus créer ou changer les valeurs par défaut des commandes.
En cas de besoin, il faut créer un fichier .ini externe à l'application , il y a une sous palette pour ça dans la palette "écriture de fichier".
le 11-06-2014 06:23 AM
Dans la série ... compiler un exe pour les NULS (moi, le premier)
quand on sort du code en "edit-run" .... par un "stop/exit" par exemple ... et bien, on repasse en edit, et pi c'est tout
mais avec un exe, quand on termine un soft ... il faut killer le process complètement ... il faut un FP_Close en fin de code
... ça, c'est réellement pour "montrer" que je compile rarement
(mais bon, là maintenant ... j'ai progressé )
11-06-2014 06:56 AM - modifié 11-06-2014 07:02 AM
Si je ne m'abuse, en mode "exe":
- si tu utilise stop, on a en effet le comportement dont tu parles.
- si tu utilise "quitter LV" (exit), alors ça ferme proprement le processus, la face avant etc.
L'un étant adapté à l'edit-run, l'autre à l'exe, je mets toujours les deux dans une condition avec un test "suis-je un exe" comme critére de la condition.