Voir le flux RSS

Blog d'un Développeur et Architecte LabVIEW par Luc Desruelle, coauteur du livre Français "LabVIEW programmation et application"

[Actualité] Exécuter une commande système avec l'invite de commande sous LabVIEW

Noter ce billet
par , 25/06/2015 à 10h52 (1132 Affichages)
I] Introduction : les problèmes avec l'invite de commande

Il est possible de faire "beaucoup de choses" avec l'invite de commande de Windows, la fameuse fenêtre "cmd" de Windows.

Sous LabVIEW, il faut utiliser le vi "Commande système" connu sous le nom "system Exec.vi".

Nom : commande+systeme.png
Affichages : 1222
Taille : 31,4 Ko

Le vi permet d'exécuter une commande système, une ligne de commande au niveau du système, qui peut inclure tous les paramètres supportés par l'application que vous voulez lancer


• Mais comment bien l'utiliser? En effet comment gérer l'erreur retournée par la commande système ?
• Mais dans quelle langue est le texte? Avez-vous regardé le texte de la sortie? texte "étrange"? avec des R‚ponse des ::1ÿ:
• Comment analyser le retour de la fenêtre?
Exemple de réponse de la commande système Ping via LabVIEW :

Envoi d'une requˆte 'ping' avec 32 octets de donn‚esÿ:
R‚ponse de ::1ÿ:ponse de ::1ÿ: temps<1ms
R‚ponse de ::1ÿ: temps=2 ms

Statistiques Ping pour ::1: Paquetsÿ: envoy‚s = 4, re‡us = 4, perdus = 0 (perte 0%), Dur‚e approximative des boucles en millisecondes : Minimum = 0ms, Maximum = 2ms, Moyenne = 0ms


II] Mais dans quelle langue est le texte de retour de la commande?


Les fenêtres de type console ou invite de commandes, sur les systèmes Microsoft Windows en Europe occidentale, utilisent la page de code 850. C'est une page de code définie par IBM et qui est utilisée en Europe occidentale avec le système DOS et d’autres systèmes de la même époque.

C’est une extension de l’ASCII sur 8 bits, partiellement compatible avec la page de code 437 dont elle est dérivée et qu’elle modifie.

Plus d'information sur wikipedia http://fr.wikipedia.org/wiki/Page_de_code_850

Le code page 850 est IBM/OEM/Microsoft Code page

Pour "traduire", convertir, la chaine de texte de retour de l'invite de commande, string au format OEM, il va falloir utiliser la user32.dll avec la fonction "OemToChar", qui permet : cf MSDN : Translates a string from the OEM-defined character set into either an ANSI or a wide-character string

Nom : 2+user32+OEMto+charA.png
Affichages : 672
Taille : 1,1 Ko

Par exemple sur une commande "ping"

Nom : texte2.png
Affichages : 780
Taille : 35,7 Ko



III] Comment gérer l'erreur retournée par l'invite de commande?

Il faut distinguer l'erreur de la fonction "invite de commande", via le vi LabVIEW "system Exec.vi" et l'erreur de la commande système appelée par "l'invite de commande".

Le vi LabVIEW ne gére pas, dans le clusteur "standard" Erreur Out, l'erreur retourneé par la fonction "utilisée" dans l'invite de commande. Il ne gére que l'erreur de la fonction invite de commande.

Par contre, la fonction LabVIEW retourne pour la commande utilisée : un indicateur de retour "code de retour" et le texte de l'erreur.

Pour gérer l'erreur, dans la fonction utilisée, le code va ressembler à cela :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
• si code 0, pas d'erreur
• sinon utiliser le vi Error Cluster From Error Code.vi pour créer une erreur LabVIEW, dans les règles de l'art. Nous allons convertir, via la fonction "OemToChar",  le texte de l'erreur de la commande systéme que nous allons ajouter dans le texte de l'erreur LabVIEW.
Nom : code+erreur3.png
Affichages : 719
Taille : 25,9 Ko


IV] Exemple de code

Nom : Luc+desruelle+code+system+execution+cmd+commande+systemeV2.png
Affichages : 764
Taille : 37,7 Ko

Luc Desruelle
Auteur du livre "LabVIEW programmation et applications"
CLA : Certified LabVIEW Architect / Certifié Architecte LabVIEW
CLD : Certified LabVIEW Developer / Certifié Développeur LabVIEW
profil

Envoyer le billet « Exécuter une commande système avec l'invite de commande sous LabVIEW » dans le blog Viadeo Envoyer le billet « Exécuter une commande système avec l'invite de commande sous LabVIEW » dans le blog Twitter Envoyer le billet « Exécuter une commande système avec l'invite de commande sous LabVIEW » dans le blog Google Envoyer le billet « Exécuter une commande système avec l'invite de commande sous LabVIEW » dans le blog Facebook Envoyer le billet « Exécuter une commande système avec l'invite de commande sous LabVIEW » dans le blog Digg Envoyer le billet « Exécuter une commande système avec l'invite de commande sous LabVIEW » dans le blog Delicious Envoyer le billet « Exécuter une commande système avec l'invite de commande sous LabVIEW » dans le blog MySpace Envoyer le billet « Exécuter une commande système avec l'invite de commande sous LabVIEW » dans le blog Yahoo

Commentaires