recupérer les 4 octets d'un reel 32bits
Répondre à la discussion
Affichage des résultats 1 à 14 sur 14

recupérer les 4 octets d'un reel 32bits



  1. #1
    invite5905bb4b

    recupérer les 4 octets d'un reel 32bits


    ------

    Bonjour

    afin de transmettre à une carte électronique un paramètre reel32bit, j'ai besoin de connaitre les 4 octets qui composent ce réel.

    Sauriez vous me dire par quel outil je peux passer pour faire cela ? ( en delphi svp )

    Merci par avance

    -----

  2. #2
    Jack
    Modérateur

    Re : recupérer les 4 octets d'un reel 32bits

    En C on fait ça avex des pointeurs. Je suppose qu'en PASCAL ça doit être la même chose.
    Il faut dans tous les cas se préoccuper du boutisme du réel à transmettre car on n'est pas certain de la manière dont il sera stocké en mémoire.

  3. #3
    jiherve

    Re : recupérer les 4 octets d'un reel 32bits

    Bonsoir,
    tu déclares un type union : un reel et 4 octets et hop!
    Je te laisse chercher comment faire c'est formateur, tu as toutes le billes .
    JR
    l'électronique c'est pas du vaudou!

  4. #4
    polo974

    Re : recupérer les 4 octets d'un reel 32bits

    google (delphi union)

    yapuka...
    Jusqu'ici tout va bien...

  5. A voir en vidéo sur Futura
  6. #5
    Bluedeep

    Re : recupérer les 4 octets d'un reel 32bits

    Citation Envoyé par Jack Voir le message
    En C on fait ça avex des pointeurs. .
    Aucune raison d'utiliser des pointeurs pour faire de l'introspection d'une structure de 4 octets (et un réel 32 bits n'est rien d'autre).

    La bonne réponse est celle de jiherve : utiliser l'union (en C & C++), le record "case" (en Pascal), ou la class avec attribut StructLayout et FieldOffset (en C#).

  7. #6
    Jack
    Modérateur

    Re : recupérer les 4 octets d'un reel 32bits

    Aucune raison d'utiliser des pointeurs pour faire de l'introspection d'une structure de 4 octets (et un réel 32 bits n'est rien d'autre).
    C'est pourtant une possibilité.

    La bonne réponse est celle de jiherve : utiliser l'union (en C & C++)
    C'est effectivement la solution la plus élégante.

  8. #7
    inviteb9f49292

    Re : recupérer les 4 octets d'un reel 32bits

    Pour utiliser l'union, le pointeur ou des masques, il faut être sûr que les deux plateformes utilisent la même représentation... Sinon il faut utiliser une représentation "descritpive": communiquer la mantisse et l'exposant explicitement, où le format "%a" de printf / scanf (C99) s'il est supporté sur les deux plateformes

  9. #8
    Bluedeep

    Re : recupérer les 4 octets d'un reel 32bits

    Citation Envoyé par lou_ibmix_xi Voir le message
    Pour utiliser l'union, le pointeur ou des masques, il faut être sûr que les deux plateformes utilisent la même représentation... Sinon il faut utiliser une représentation "descritpive": communiquer la mantisse et l'exposant explicitement, où le format "%a" de printf / scanf (C99) s'il est supporté sur les deux plateformes
    Sauf erreur de ma part, La représentation du float est normalisé IEEE 754 depuis 1985.

  10. #9
    bisou10

    Re : recupérer les 4 octets d'un reel 32bits

    tu as bien des manières de faire, mais un masque, un cast et un décalage me semble la plus adaptée. Restons cohérent, OP pose une question de base, choisissons une solution simple !

  11. #10
    Bluedeep

    Re : recupérer les 4 octets d'un reel 32bits

    Citation Envoyé par bisou10 Voir le message
    tu as bien des manières de faire, mais un masque, un cast!
    La solution simple c'est l'union (comme dit depuis le début); un cast ici ne marche pas.

  12. #11
    Jack
    Modérateur

    Re : recupérer les 4 octets d'un reel 32bits

    Citation Envoyé par Bluedeep Voir le message
    La solution simple c'est l'union (comme dit depuis le début);
    On est d'accord
    un cast ici ne marche pas.
    si, ça marche. En supposant que je compile sur une machine little endian
    Code:
    	float val = 0.5;
    	unsigned char tab[4];
    	unsigned char* p=(unsigned char*)&val;
    	for (int i=3; i>=0; i--)
    	{
    		tab[i] = (unsigned char) *(p++);
    	}

  13. #12
    Bluedeep

    Re : recupérer les 4 octets d'un reel 32bits

    Citation Envoyé par Jack Voir le message
    On est d'accord
    si, ça marche.
    Quand je disait un cast ne marche pas, ça supposait bien évidemment "juste un cast"; ce qui n'est pas le cas dans l'exemple que tu donnes. (en C du moins; car en C++, il existe d'autres options, avec le dynamic_cast, etc ... et en C#, la possibilité de redéfinir l'opérateur de cast explicite et implicite permet aussi de faire ce qu'on veut ou presque avec un cast).

  14. #13
    Jack
    Modérateur

    Re : recupérer les 4 octets d'un reel 32bits

    On est d'accord.

  15. #14
    inviteb9f49292

    Re : recupérer les 4 octets d'un reel 32bits

    Sauf erreur de ma part, La représentation du float est normalisé IEEE 754 depuis 1985.
    Il n'y a pas d'erreur, c'est bien un standard d'une trentaine d'année, mais ce n'est pas pour autant que c'est le seul, ni que toutes les plateformes ne respecte ce standard précis... ce qui est d'autant plus vrai que dans l'embarqué il n'y a pas forcément de FPU... Il est vrai que les non-conformance à IEEE-754 que j'ai croisé était plus sur des aspects "mécaniques" (absence de symbole NAN, exceptions qui ne petent pas forcement au même conditions, arrondis gérés différement...) que sur la représentation, mais ça me semblait important à préciser car c'est tout de même la question fondamentale à se poser même si la réponse est oui à 99%.

Discussions similaires

  1. PIC 16bits ou 32bits ???
    Par invite00ef4ec7 dans le forum Électronique
    Réponses: 10
    Dernier message: 06/04/2013, 16h37
  2. Conversion complément à 2 d'un CAN 32bits
    Par invite3d4f2ff3 dans le forum Électronique
    Réponses: 6
    Dernier message: 27/10/2011, 17h46
  3. Transmission série 32bits
    Par invite42af45f5 dans le forum Électronique
    Réponses: 1
    Dernier message: 21/07/2011, 11h05
  4. Microcontroleur 32bits et OS
    Par invitea674c8fa dans le forum Électronique
    Réponses: 26
    Dernier message: 27/01/2009, 12h48
  5. Program microcontroleur 32bits
    Par invite923be736 dans le forum Électronique
    Réponses: 7
    Dernier message: 24/07/2007, 09h59