le 04-27-2016 04:25 AM
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
Résolu ! Accéder à la solution.
le 04-27-2016 04:31 AM
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
le 04-27-2016 04:54 AM
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
le 04-27-2016 06:35 AM
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
le 04-27-2016 07:30 AM
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é
le 04-27-2016 09:20 AM
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.
le 04-27-2016 01:42 PM
J'arrive en retard, le train est parti
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)