Discussions au sujet de NI LabVIEW

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

Conversion d'un nombre en chaine sur 1 octet

Résolu !
Accéder à la solution

Bonjour,

 

Je suis actuellement étudiante et débutante en LabView, mais je dois effectuer un Checksum (je suis partie sur le principe du OU exclusif), qui doit tenir sur 1 seul octet, et l'ajouter à ma trame.

 

J'ai essayé plusieurs choses, par exemple la fonction "Nombre en chaîne décimale", le problème dans ce cas est que si mon checksum est par exemple 26, il envera le caractère 2 et le caractère 6, soit 2 octets.

 

De même, j'ai utilisé la fonction "adapter type" mais j'avoue ne pas savoir l'utiliser puisque je ne vois pas quoi mettre en entrée "type" justement.. Et que si je ne la relie pas, cela envois 3 octets. J'ai repéré un sujet similaire qui l'utilise mais qui ne dit pas comment (Post Adapter Type).

 

En vous remerciant d'avance, je vous joins mon sous-vi Checksum

0 Compliments
Message 1 sur 11
5 218 Visites
Solution
Accepté par l'auteur du sujet Cass.y

Bonjour,

 

Considérant que votre calcul du CRC est correct, nous sommes d'accord que c'est la conversion du résultat sous la forme d'un caractère chaine qui vous gêne.

 

Il faut effectivement utiliser la fonction "adapter type", qui n'a pas besoin d'entrée Type puisqu'elle utilise le type Cjaine par défaut.

En revanche, si vous ne voulez n'avoir qu'un seul octet, il faut que votre donnée soit codée en U8 avant. Ici vous avez un I32, vous devriez donc avoir 4 octets après conversion (et non 3 comme expliqué dans votre post)!

 

Cordialement,

Olivier L. | Certified LabVIEW Developer


Message 2 sur 11
5 212 Visites

Bonjour Olivier,

 

je laisse ta réponse "en premier plan" ...

 

mais j'ai passé 10 min sur cette question ... alors je place "aussi" (trop bête d'avoir fait ça pour rien Smiley heureux )

C'est en fait la même chose que ce que tu as dit.

 

SR2.png

Message 3 sur 11
5 208 Visites

Rebonjour;

 

Merci beaucoup à vous deux, c'était effectivement ce qu'il me fallait.

 

Ci-joint ma nouvelle version, ça pourra peut être servir à quelqu'un !

 

0 Compliments
Message 4 sur 11
5 192 Visites

 

SR2.png

 

 

 

Pourquoi utiliser une fonction "Index_Array" cablée sur le Terminal d'Itération ... et pas un Tunnel d'entrée indexé ?

 

(comme repris dans l'image 2 messages plus haut)

 

Vos 2 variables locales sont "flottantes".

 

En vertu du dataflow, rien ne vous permet d'affirmer que cette initialisation sera exécutée avant le reste du code.

 

avec une constante U8 (et pas I32) vous éliminez le point de coercition.

 

Que pensez-vous de ceci :

 

SR1.png

Message 5 sur 11
5 174 Visites

Bonjour,

 

J'avoue que tout ce qui concerne l'indexation je n'y connais pas grand chose, et que j'ai coder ça avec mon idée en C en tête.

Si je comprends bien le tunnel indexé va permettre d'avancer pas à pas dans mon tableau ?

 

En revanche en ce qui concerne les variables flottantes je n'ai pas tout compris...

 

Désolée de poser ce genre de question apparament basiques mais j'avoue être un peu perdue dés qu'on rentre dans ce genre de détails.

Message 6 sur 11
5 126 Visites

dans ce genre de détails ....

 

my God ! Ce ne sont pas des détails !

Vous touchez là aux fondements de Labview   Smiley surpris

 

"l'indexation" avec LV est une chose très puissante.

oui ... en entrée l'indexation vous permet de "prendre" les éléments d'un Tableau un par un.

et en sortie ... l'indexation va vous permettre de "re-construire" un Tableau.

 

SR1.png

 

variables flottantes.

 

Le principe "de base" de LV est le "flux de données" ... 

 

ça veut dire quoi ?

 

ça veut dire que dans LV, un code s'exécute "en suivant la progression les données".

Dès qu'une fonction, ou quoi que ce soit, dispose à ses entrées des données nécessaires, cette chose est susceptible de s'excécuter.

 

Cette chose va-t-elle s'exécuter immédiatement ? (si elle dispose des données nécessaires à ses entrées)

Là ... c'est LV qui décide ... qui répartit le temps processeur entre les "modules qui sont en état d'être exécutés".

 

Que se passe-t-il avec votre code ?

 

a) les variables locales ont les données nécessaires à leurs entrées pour que leur initialisation s'exécute.

mais en même temps ...

b) la boucle For a "aussi" ce dont elle a besoin à ses entrées pour s'exécuter.

 

Qui va s'éxécuter en premier ... "a" ou "b" ... personne ne peut le dire !

Pourquoi ?? ... parceque entre "a" et "b" il n'y a pas "de lien flux de données" ...

"a" ne dépend pas de "b" (et l'inverse) ... "a" et "b" sont indépendants.

 

et alors ?

 

et alors ... votre boucle For peut très bien s'exécuter avant l'initialisation de vos variables

LV peut très bien exécuter l'init des variables locales en fin d'exécution  (cela est possible) .

 

Solution ?

 

Utiliser une Structure Séquence pour établir un "lien de données" entre l'initialisation des variables locales et le reste du code

De cette façon, on sera certain que ces variables seront initialisées en premier.

 

Désolée de poser ce genre de question

 

faut pas, allez-y, posez  ... Smiley heureux

 

 

 

Message 7 sur 11
5 121 Visites

Rebonjour !

 

On ne pouvait pas faire plus clair ^^. Effectivement, c'est bien plus optimisé comme ça.

Mais cela me fait poser une autre question du coup. J'ai une boucle while que je veux infinie jusqu'à un arrêt d'urgence, qui enverra une trame d'arrêt d'urgence au robot (via une liaison série RS232, pour la petite histoire). Dés qu'il y aura un appuis dessus il sortira, ou bien il peut y avoir des cas où il ne sortira pas de la boucle tout de suite ?

0 Compliments
Message 8 sur 11
5 109 Visites

Une While infinie ?

 

mis à part "l'arrêt d'urgence" ... vous la soppez comment cette While ? ...

 

ça tourne jusqu'à ce que le PC tombe en panne ?  Smiley tirant la langue  (je taquine)

 

pour ce problème, il ya plusieurs solutions possibles ... 

(si .. il y a moyen de "sortir tout de suite d'une While" ... avec une astuce en forme de Structure Event)

 

je reviens après votre réponse.

0 Compliments
Message 9 sur 11
5 106 Visites

SR1.png

 

Je préfère avec le "Code Principal" en dehors de la Structure Event.

Pour "l'instantanéité" de l'arrêt d'urgence, c'est mieux.

0 Compliments
Message 10 sur 11
5 099 Visites