pointeurs structure union, lequel choisir

Il n'y a pas à choisir entre structure et union. Ce sont deux concepts complètement différents.
Une structure définit un ensemble de variables hétérogènes qui forment un bloc contiguës de données en mémoires. La structure permet de manipuler le bloc de variables en passant simplement le pointeur sur la dite structure.
Une union définit une zone de données hétérogènes qui partagent un même espace mémoire. L'union permet par exemple de manipuler un long sous forme d'octets en créant une union entre un long et un tableau de 4 byte.

Dans ton cas l'union est effectivement un bon choix puisqu'il permet de partager un espace mémoire commun pour y placer des données de type différents.
Maintenant, intellectuellement, la solution n'est pas très élégante. Si tu ajoutes ou supprimes des senseurs ou bien si tu modifies le format des données tu vas devoir changer cette union. Je pense que la solution permettant le plus de souplesse et d'évolutivité serait que:

  • tu écrives une classe pour chacun des senseurs.
  • que ta routine de réception se contente de recevoir des byte
  • qu'en fonction du type de senseur identifié la routine de réception passe la main à la méthode de décodage associée à la classe du senseur en lui transmettant les données reçues.

Par rapport à l'union :

  • on utilise toujours qu'un tampon de réception.
  • Le programme principal ne connait pas et n'a pas à connaitre les types manipulés
  • les évolutions des senseurs sont complètement transparentes pour le programme principal