msport a raison, je peux en dire plus
J'utilise effectivement la bibliothèque due_can que je joins en PJ
Une bonne initiation est donnée dans ce programme CAN_trafficSniffer.ino
Il y a une définition très interessante dans ACAN que vous pouvez utiliser dans votre programme pour manipuler les 8 octets de données :
public : union {
uint64_t data64 ; // Caution: subject to endianness
uint32_t data32 [2] ; // Caution: subject to endianness
uint16_t data16 [4] ; // Caution: subject to endianness
float dataFloat [2] ; // Caution: subject to endianness
uint8_t data [8] = {0, 0, 0, 0, 0, 0, 0, 0} ;
} ;
Cela permet de lire et écrire directement différents types de variables dans ces 8 octets selon vos besoins et sans programme de conversion de type à écrire.
Attention "Caution: subject to endianness" signifie que cela peut ne pas marcher lorsque votre système ne place pas les octets dans le bon ordre... debugguer avec des Serial.print permet de détecter le problème.
Dans mon projet j'ai 2 Due, l'un pour le gestionnaire global du réseau que je publierai prochainement et l'autre pour un testeur et aide à la mise au point qui utilise un écran graphique et quelques boutons permettant de construire des modules de test comme on veut. Je le joins dans son état actuel, en chantier et plein de promesses, mais pas fini
L'essentiel de la gestion Can se trouve dasn le fichier canmessages.h