Discussions au sujet de NI LabVIEW

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

Convertir chaine decimal en ASCII

Résolu !
Accéder à la solution

Bonjour,

 

J'ai un capteur laser qui envoie des datragrammes (UDP) avec des chaînes de données en decimal.

Je voulais savoir comment convertir ces données en ASCII et après récuperer des morceaux du datagramme une fois convertis.

 

Merci d'avance

0 Compliments
Message 1 sur 7
5 333 Visites

Bonjour,

Pourrais tu fournir un exemple de trame remonté, car là je ne comprends pas bien ta problématique.


Si j'ai bien suivi, pour extraire des données de ta trame retour, tu peux utiliser les fonctionnalités dans la palette chaine

- Transformer tableau de U8 en chaine Ascii

-Balayer une chaine avec des arguments de type %d,%f.


En fournissant un exemple de trame, je pourrais aisément te faire un Vi de démo.


Cdt,

Michael

“En science, la phrase la plus excitante que l'on peut entendre, celle qui annonce des nouvelles découvertes, ce n'est pas "Eureka" mais c'est "drôle"
Isaac ASIMOV
0 Compliments
Message 2 sur 7
5 329 Visites

Trame.png

La première ligne correspond a la trame que je reçois du capteur en décimal, la seconde est la conversion en ASCII.

 

Je veux faire cette conversion et âpres récupérer dans un tableau les trois groupes de données en ASCII (33814, 33854, 33814).

 

Merci,

Cdt

 

0 Compliments
Message 3 sur 7
5 323 Visites
Solution
Accepté par l'auteur du sujet MartinRJ

Voici un exemple pour t'aider à démarrer.



Attention ce programme ne marche que si la tabulation est remontée en "09" par ta liaison, sinon il faudra adapter pour que le découpage en octet se passe bien.


Cdt,

Michael

“En science, la phrase la plus excitante que l'on peut entendre, celle qui annonce des nouvelles découvertes, ce n'est pas "Eureka" mais c'est "drôle"
Isaac ASIMOV
Message 4 sur 7
5 297 Visites

Merci de votre réponse,

 

Je suis désole mais ça fait juste une semaine que je commence à utiliser Labview et j'ai du mal à comprendre le code.

Vous découpez la chaine tout d'abord el âpres vous la convertissez?

J'ai une erreur quand j'essai de le faire tourner.

Pourriez-vous m'expliquer un peu les étapes du code?

 

Merci beaucoup et encore désolé

0 Compliments
Message 5 sur 7
5 289 Visites

Mon code est simple.

Je suis partie du principe que tu récupères ta trame UDP dans un indicateur Texte.


Ensuite, je récupère cette chaîne que je coupe tous les 2 caractères pour récupérer ma valeur "ASCII". Je stocke ces valeurs dans un tableau de U8 (valeur allant de 0 à 255"), et j'utilise la fonction de labview pour transformer ce tableau de valeur ASCII en chaîne texte.

Enfin avec la fonction balayer une chaîne, j'extrait les 3 valeurs qui t'intéresse avec l'argument "%d\t%d\t%d", de manière intelligible cela veut dire que je recherche des valeurs décimales (%d) séparés par des tabulations (\t).



Et comme dit plus haut, le risque de cette méthode, vient de ta récupération de trame. Suivant l'exemple que tu as fourni, le tabulation serait remontée '9' au lieu de "09", ce qui pourrait entrainer un décalage de mon découpage, générant des valeurs erronées.

“En science, la phrase la plus excitante que l'on peut entendre, celle qui annonce des nouvelles découvertes, ce n'est pas "Eureka" mais c'est "drôle"
Isaac ASIMOV
Message 6 sur 7
5 270 Visites

J'arrive en retard, le train est parti  Smiley heureux

 

rien de "révolutionnaire" ... juste pour participer.

inconvénient : j'utilise un regex un peu comlexe (avec lookahead et lookbehind)

avantage : je m'affranchis du soucis "09" / "9"

 

La solution de Michael est tout aussi valable (mieux? pas de regex, donc peut-être plus rapide)

 

 

yyyyyy.png

Message 7 sur 7
5 241 Visites