le 10-27-2015 08:14 AM
Bonjour,
Nous avons porté une application de Teststand 3.5 sous windows XP vers Teststand 2014 sous Windows7.
Précédemment, l'arrêt du PC par un appui court sur le bouton entrainait l'arrêt propre de la séquence en cours d'exécution.
Désormais, Teststand affiche un popup indiquant qu'une séquence est en cours d'exécution, ce qui bloque l'arrêt de Windows.
Sachant que nos équipements travaillent sans clavier ni souris, c'est embêtant.
Il y a probablement un réglage quelque dans les paramètresTestStand mais nous ne trouvons pas lequel.
le 10-30-2015 05:21 AM
Bonjour R1M,
Il n'y a pas de fonction native dans TestStand qui gère l'arret propre de la séquence lors de l'arrêt du PC. Windows à modifier le mode de fermeture des applications en cours d'exécution et maintenant demande à forcer l'arret si une application est en cours d'exécution.
L'approche serait de developper une callback venant récupérer les infos windows et ainsi arrêter proprement la séquence TestStand avant l'arret complet du PC.
Voici un exemple C#, dans le jeu de fonctions fournit par nos softs :
private void MainForm_Closing(object sender, System.ComponentModel.CancelEventArgs e)
{
// Don't set e.Cancel to true if windows is shutting down.
// Doing so would prevent windows from shutting down or logging out.
if (!sessionEnding)
{
// initiate shutdown and cancel close if shutdown is not complete. The applicationMgr will
// send the ExitApplication event when shutdown is complete and we can close then
if (axApplicationMgr.Shutdown() == false)
e.Cancel = true;
}
Cordialement,
Eloise
NI France
10-30-2015 05:50 PM - modifié 10-30-2015 05:52 PM
Bonjour R1M,
Ci-joint un exemple LabVIEW 2014 montrant comment capter l'évènement de fermeture de Windows.
En snippet :
La callback .NET affiche une boite de dialogue. Dans votre cas il faudra provoquer la fermeture de TestStand.
Cordialement,
Romain DUVAL || RF & Semiconductor Staff System Engineer || CLA || CTA
National Instruments France
le 11-01-2015 03:51 AM
Merci Eloise pour cette piste et explication qui sera essayée semaine prochaine: nous interfaçons Teststand avec une DLL Labwindows/CVI, j'espère que nous pourrons mettre en oeuvre une approche similaire à celle présentée en C#.
Pour Romain, sachant que nous n'avons pas de LabView dans l'application, ça me semble compliquer d'en mettre rien que pour ça.
11-02-2015 02:15 AM - modifié 11-02-2015 02:15 AM
Bonjour R1M,
Malheureusement vous n'aviez pas précisé l'environnement de programmation utilisé pour la création de vos codes mdules. 😉
CVI est aussi capable de gérer les évènements .NET depuis la version 8.5.
Pour cela, il faudra créer un delegate et y registrer votre évènement .NET via la fonction CVI "CDotNetCreateDelegate"
Une recherche rapide dans CVI vous permettra de trouver un exemple sur la manière de procéder : C:\Users\Public\Documents\National Instruments\CVI2013\samples\dotnet\Timer
Romain DUVAL || RF & Semiconductor Staff System Engineer || CLA || CTA
National Instruments France
11-02-2015 06:30 AM - modifié 11-02-2015 06:38 AM
Merci Romain.
Notre code de base (pour créer la .dll utilisée dans Teststand) est en C sous CVI. Nous n'avons pas de coméptences pour faire du .net mais allons tout de même regarder comment intégrer cette démarche dans notre code.
PS: je n'ai pas ces exemples installés sur une de nos machines, j'irai voir sur la seconde plus tard.
le 11-03-2015 03:40 AM
Nous n'avons pas d'expérience dans l'intégration de fonctions .NET dans une DLL faite en C sous CVI.
Auriez vous un tutorial à proposer?
le 05-12-2016 01:19 AM
Est-ce qu'il existe de nouvelles ressources à ce sujet? Nous devons absolument faire évoluer notre application pour permettre un arrêt propre sans action clavier lorsque l'utilisateur demande l'arrêt du PC par le bouton d'alimentation.
le 05-12-2016 02:07 AM
Bonjour R1M,
Il existe un exemple montrant comment créer une callback pour un évènement .NET :
C:\Users\Public\Documents\National Instruments\CVI2013\samples\dotnet\Timer
Il vous faudra créer un wrapper pour l'assembly System.dll en Utilisant le ".NET create controller" outils de CVI.
Cordialement,
Romain DUVAL || RF & Semiconductor Staff System Engineer || CLA || CTA
National Instruments France
le 06-28-2016 01:14 AM
En fait, nous avons trouvé sur Internet un réglage de Windows qui permet de ne pas rester bloqué sur l'écran qui apparait à l'initiative de TestExec.
Voilà les réglages à appliquer sur la base de registres
===
Windows Registry Editor Version 5.00
[HKEY_CURRENT_USER\Control Panel\Desktop]
"AutoEndTasks"="1"
"HungAppTimeout"="1000"
"WaitToKillAppTimeout"="2000"
"LowLevelHooksTimeout"="1000"
===
ça fonctionne en n'ayant un blocage que de 2s environ.