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 des autres produits NI

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

fermeture de teststand par windows7

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.

 

0 Compliments
Message 1 sur 12
5 363 Visites

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

Message 2 sur 12
5 313 Visites

Bonjour R1M,

 

Ci-joint un exemple LabVIEW 2014 montrant comment capter l'évènement de fermeture de Windows.

 En snippet :

 

exemple snippet.png

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

Message 3 sur 12
5 300 Visites

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.

0 Compliments
Message 4 sur 12
5 282 Visites

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

Message 5 sur 12
5 266 Visites

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.

0 Compliments
Message 6 sur 12
5 255 Visites

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?

0 Compliments
Message 7 sur 12
5 223 Visites

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.

0 Compliments
Message 8 sur 12
4 338 Visites

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

0 Compliments
Message 9 sur 12
4 334 Visites

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.

0 Compliments
Message 10 sur 12
4 046 Visites