Envoyer un float sur l'UART et le décoder sur PC

Bonjour,

mon board est relié à un PC via une UART. Je lui envois des float avec le code suivant :

unsigned int* memoryPtr = (unsigned int*)&x; buf[0] = (unsigned char)(((*memoryPtr)& 0xFF000000) >> 24); buf[1] = (unsigned char)(((*memoryPtr)& 0x00FF0000) >> 16); buf[2] = (unsigned char)(((*memoryPtr)& 0x0000FF00) >> 8); buf[3] = (unsigned char)((*memoryPtr) & 0x000000FF); Serial.write(buf,sizeof(float));

Côté PC je lis des float (en Java) mais ils ne correspondent pas à ce que j'envois...

Pourtant ça marche très bien avec des int (lecture de short en Java) :

unsigned int* memoryPtr = (unsigned int*)&x; buf[0] = (unsigned char)((*memoryPtr) >> 8); buf[1] = (unsigned char)((*memoryPtr) & 0x000000FF); Serial.write(buf,sizeof(int));

Quelqu'un a une idée???

Merci!

unsigned int* memoryPtr = (unsigned int*)&x;

moi j'aurais plutôt mis

unsigned long* memoryPtr = (unsigned long*)&x;

Merci! :)

Ca explique pourquoi ça marchait pour les int (2 bytes) et pas pour les float (4 bytes)!