02-26-2018 08:24 AM - modifié 02-26-2018 08:33 AM
Bonjour la communauté,
je suis actuellement entrain de travailler sur une fonction qui me faciliterai la tache dans les conversion de donnée reçue par mon réseau CAN.
Ma fonction permet actuellement de récupérer des variable sur 1 et 2 octets, mais cette fois-ci je souhaite récupérer des donnée de type DINT.
Pour ce faire je suis parti du même principe que l'INT en faisant un décalage mais je n'ai pas le résultat souhaité. Mais lors du traitement de la donnée reçu je n'ai pas le résultat attendu qui devrait être normalement 287686 ou une valeur rapprochée. Or je trouve une valeur de 25542, pourriez vous m'éclairer afin de savoir et comprendre mon erreur ?
Voici la partie du code que j'utilise.
Merci d'avance.
Voici la trame que j'envoi durant l'essai.
Cordialement.
Baba59
Résolu ! Accéder à la solution.
le 02-26-2018 10:35 AM
Tu essais de décaler de 16 et 32 bits des nombres que tu as convertis en U16 (ce qui te donne 0 dans le 2 cas, comme il te reste C6 et 63 tu obtiens 25542), converti en U64 à la place.
Tu pourrais également récupérer le data de la façon suivante si la charge utile de ta trame CAN est de huit bytes:
ou bien:
Ben64
le 02-27-2018 02:10 AM
Bonjour,
c'est effectivement ce qui me fallait. Merci bien.
Bonne journée à vous.
Baba59
le 03-29-2018 04:27 AM
bonjour pouvez vous poster ton fichier executable .vi ??