Discussions au sujet de NI LabVIEW

cancel
Showing results for 
Search instead for 
Did you mean: 

Données minorées rs232/usb

Solved!
Go to solution

Bonjour,

 

J'ai fait une appli qui fait l'acquisition de données d'un hygromètre (Dew point mirror 473). J'ai construit un .exe et l'appli fonctionne correctement chez moi. Chez moi l'instrument est relié en rs232 de mon pc à l'instrument.

 

Le problème est lorsque je lance l'appli sur un autre pc qui n'a pas labview, mais qui a les moteurs d'execution, ni visa, ni488, ni serial. Avec un adaptateur rs232/usb pour relier l'instrument au pc. Mes données sont minorées (la lecture :22.95 --> l'affichage :22).

Chez moi l'appli m'affiche correctement 22.95 pour suivre l'exemple.

L'export excel donne les données minorées.

 

Une idée d'où peux venir le problème ?

 

Ci-joint l'appli

 

Merci

 

Dorian

0 Kudos
Message 1 of 11
(500 Views)
Highlighted

Salut DarianG,

 

Hmm, on ne voit plus les chiffres après la virgule, à mon avis cette affaire pue l'incompréhension du "decimal point" entre tes deux PCs :

Grosso-modo, nos amis Américains et nous-mêmes n’écrivons pas les chiffres de la même manière. Là où nous on utilise un "," (une virgule) pour parler des chiffres après la virgule (comme son nom l'indique), eux utilisent un "." (un point).

Si, sur LabVIEW, tu as laissé coché la case "Use localized decimal point" (dans Tools -> Options -> Front Panel) et que les deux ordis ont des langages différents (un en anglais américain et l'autre en français par exemple), le problème vient sans aucun doute de là. 

 

C'est à creuser. Voilà donc quelques pistes :

  1. Essaye de tester de créer un .exe avec "Use localized decimal point" décoché.
  2. Crée une probe (ou un indicateur !) en sortie de VI VISA Read pour voir ce que tu lis réellement. Si tu lis bien 22.95, et non 22, c'est que le problème n'est qu'un souci de conversion du String en Double, et du coup ce n'est rien de grave.
  3. Change peut-être ta spécification de format ("%f"), en la forçant à avoir deux chiffres derrière la virgule ("%.2f" je crois, à vérifier dans l'aide LabVIEW).
Bilsix
Message 2 of 11
(421 Views)
Highlighted

Salut Bilsix,

 

J'ai essayé les points 1 et 3 et ça n'a pas résolu le problème.

Je ne peux pas tester le point 2 pour l'instant car je n'ai pas accès à l'instrument mais qu'entends tu par soucis de conversion du string en double ? J'ai essayé de remplacer le vi de conversion en tableau par le vi Chaine décimale en nombre avec un construire tableau juste derrière (vi en PJ) mais ça ne marche pas non plus.

 

Je comprends pas pourquoi il me fait ça sur le nouveau pc, ça ne pourrait pas venir de l'adaptateur usb/rs232 par hasard ?

 

Merci,

 

Dorian

 

 

0 Kudos
Message 3 of 11
(347 Views)
Highlighted

Tu as vérifié si les options d'excel également sont identiques sur les 2 PC? Dans Excel -> Options ->Options Avancées -> Options d'édition : Utiliser les séparateurs système.

 

Ben64

--------------------------------------------------
The best way to say thanks is to give kudos!
Message 4 of 11
(280 Views)
Highlighted

Bonjour Ben,

 

Le problème vient de l'appli elle même car mes indicateurs n'affichent pas la valeur en décimale mais en entière. (et du coup idem pour mes graphs) 😕

 

Dorian

 

0 Kudos
Message 5 of 11
(274 Views)
Highlighted

Tu utilises le vi Decimal String to Number dans ton code alors forcément tu n'auras pas de chiffres après la virgule (ou le point). Remplace ces fonctions par Fract/Exp String To Number.

 

Ben64

--------------------------------------------------
The best way to say thanks is to give kudos!
Message 6 of 11
(264 Views)
Highlighted

Hmm, je ne pense pas que le souci vienne de l'adaptateur à titre personnel.

Si tu arrives à te connecter au port série et à lire une valeur, il n'y a aucune raison pour que tu ne lises pas la valeur entièrement.

Quand je parle de "souci de conversion de string en double", ça signifie que tu lis bien la bonne chaîne de caractère (le bon string) en sortie du VISA Read, mais que lorsque tu souhaites transformer la chaîne de caractère en valeur numérique (en double), il y a une troncature qui se fait sans qu'on le veuille parce que quelque chose nous a échappé dans ton code. Si ce n'est que ça, ça signifie que le problème n'est qu'un problème de programmation, et qu'il sera donc résolvable facilement.

 

Par contre, quand tu dis que tu "n'as pas accès à l'instrument", que veux-tu dire ?

Est-ce que tu peux lire une valeur sur le port série renvoyée physiquement par ton instrument ? L'hygromètre est bien branché dans tes deux tests (PC avec environnement de dev et PC avec executable) ?

Et quand tu lances l'executable sur le PC de developpement, est-ce que tout fonctionne ?

 

EDIT : Je viens de voir la réponse de ben64 au-dessus de la mienne. Je te conseille fortement s'essayer sa proposition pertinente avant de me répondre...

Bilsix
0 Kudos
Message 7 of 11
(253 Views)
Highlighted

Re !

Je n'avais pas accès à l'instrument sur le moment, j'ai développé l'appli avec l'instrument "chez moi" et une fois que l'appli fonctionnait je l'ai rendu au propriétaire sauf qu'au lancement de l'appli sur son pc on s'est rendus compte du problème de virgules.

J'ai lancé l'appli sur une 3eme machine qui elle a labview 2015 et j'avais toujours des nombres entiers.

Après plusieurs tests je me suis rendu compte que l'hygromètre envoie une string du type :

"

25.2561

"

et non "25.2561"

donc lorsque je récupérais la donnée je récupérais que le premier caractère qu'il interprétais par un 0.

J'ai donc rajouté un offset de 1 et ça a résolu le problème sur la machine 2015.

Cependant 2 soucis :

L'appli plante au bout de 1min environ: plus aucun bouton ne marche et labview ne réponds plus. 
Sur le pc du proprio l'acquisition ne s'éffectue même pas. Et lorsque je quitte l'appli j'ai un message d'erreur labview (Exception access violation 0xC0000005 à EIP = 0x308060F0)

.
Je ne comprend pas pourquoi les comportements sont différents d'un pc à l'autre alors que je génère un .exe, sur mon pc de développement l'appli fonctionne parfaitement avec un vi chaine de type tableur en tableur, sur le pc 2015 j'ai du mettre une chaine exp/frac en nombre avec un offset pour que ça fonctionne partiellement et sur le 3ème pc ça ne fonctionne pas.

 

Pour rappel les 3 machines : 

Développement : Labview 2014 windows 7. Fonctionne parfaitement

Destination : Run-time engine 2014 ni-visa ni-serial windows 7 portable. Ne fonctionne pas

Test : Labview 2015. Fonctionne mais plante

 

Ci joint le projet labview.

 

0 Kudos
Message 8 of 11
(116 Views)
Highlighted

toto.png

la structure du programme n'est pas très "labview" ☹️

2 structures événements !

dont 1 juste avec un timeout ?

et l'autre qui ne s'exécutera qu'une seule fois car à l'extérieur de la boucle while !

 

 

0 Kudos
Message 9 of 11
(108 Views)
Highlighted

Bonjour thib_fr,

 

Oui l'appli est pas très "labview" mais c'est ma première appli, jusqu'à maintenant j'avais juste fait des modifs dans des applis existantes, je n'ai aucune formation.

Je déduis de ton message que 2 structures évènement est une mauvaise idée (en effet l'utilisation est particulier en conséquence) qu'elle est une bonne façon de faire dans ce cas ?

Merci 

 

Dorian

0 Kudos
Message 10 of 11
(104 Views)