Je répond également parce que finalement ce n'est pas spécifique à votre problème,
En fait votre problème n'est pas lié au CAN, vous l'auriez avec n'importe quel réseau.
Votre problème est de coller les octets constituant votre nombre à virgule dans les octets du message.
Pour émettre votre message vous utilisez un truc du genre
can.sendMsgBuf(id,type,data,longueur);
où id est l'identifiant du message, type le type (0 = standard, 1 = extended), data un pointeur vers, au plus, une successions de 8 octets de données et longueur la longueur en octets, un byte.
Pour envoyer une variable v de type float dans un message standard, il faut écrire :
can.sendMsgBuf(id,0,(byte *)(&v),sizeof(v));
&v donne un pointeur sur v, (byte *) le converti en un pointer sur un octet, sizeof(v) retourne la taille en octets de v, c'est à dire 4 mais c'est mieux de l'écrire comme ça.
À la réception, vous appelez :
can.readMsgBuf(data, longueur);
Où data est un pointeur vers, au plus, une successions de 8 octets de données et longueur un pointeur vers un byte ou sera écrit la longueur en octets du message reçu.
Si v2 est votre variable de type float où vous souhaitez recevoir la donnée et len un byte où vous souhaiter voire écrit la longueur, il faut écrire :
can.readMsgBuf((byte *)(&v2), &len);