14/03/2009, 04:16:23
Note de ce sujet :
Calcul Hexa -> Decimal qui me pose des soucis
|
14/03/2009, 12:26:13
On 14 mar, 04:16, Gilles ARNAUD <lifedo...@live.fr> wrote:
> J'ai un souci de conversion sur un EIS 4 bytes qui renvois des W. (ets signale leng Quel est le data type EIS ? Je suppose que ce n'est pas EIS4 (Date) et des EIS à 4 bytes, il y en a 4 différents, alors ?!?
14/03/2009, 13:10:24
bonjour,
Si c'est un nombre à virgule flottante sur 4 octets, c'est probablement le format 32 bits IEEE, le même que pour les float sur PC A+ Jean-François On 14 mar, 12:26, Marc Assin <raym...@warichet.com> wrote: > On 14 mar, 04:16, Gilles ARNAUD <lifedo...@live.fr> wrote:> J'ai un souci de conversion sur un EIS 4 bytes qui renvois des W. (ets signale leng > > Quel est le data type EIS ? > Je suppose que ce n'est pas EIS4 (Date) > et des EIS à 4 bytes, il y en a 4 différents, alors ?!?
14/03/2009, 13:19:19
14/03/2009, 18:41:27
On 14 mar, 13:19, Gilles ARNAUD <lifedo...@live.fr> wrote:
> Normalement un EIS5, float 32 bits avec virgule... Ah ?!? D'après ma doc (Konnex, July 2004 PAGE 3/24) EIS5 "2-octet Float Value"
14/03/2009, 21:59:08
Le compte est bon ;-)
Si tu pars de 43 1C 82 8F 1 bit de signe: valeur = 0 (nombre positif) 8 bit d'exposant: valeur = 134 (0x43 décalé d'un bit vers la gauche) 23 bit de mantisse: valeur = 1868431 (1C 82 8F en hexa) L'exposant représente une valeur décalée de 2^(x-1) - 1 (x représente le nombre de bits de l'exposant) Dans notre cas (exposant sur 8bit) c'est décalé de 127 donc l'exposant réel est 134-127 = 7 La mantisse représente un nombre compris entre 1 et 2, il faut donc diviser notre nombre par la valeur maximale de la mantisse (23 bits => valeur maximale = 2^23) pour la ramener entre 0 et 1. Ensuite ajouter 1 pour l'avoir entre 1 et 2. Donc la mantisse vaut 1+(1868431 / (2^23)) = 1.22273433 1.22273433 * 2^7 = 156.509994 Formule complète: (1+(1868431 / (2^23))) * 2^(134-(2^(8-1)-1)) = 156.509995 Pas vraiment évidente, la conversion... Dans linknx, j'ai réglé le problème de la manière la plus simple qui soit. Je stocke les bytes dans un entier 32bit puis je cast en float. Et comme par définitien ce type KNX correspond au format IEEE 754 qui est celui utilisé par le type float en C, ça marche comme un charme. Pour plus d'info sur tous les types KNX, il existe un document librement disponible sur leur site (pour une fois que quelque chose concernant le standard KNX est librement disponible, ça vaut le coup de le signaler): http://www.knx.org/fileadmin/downloads/0...3%20AS.zip A+ Jean-François On 14 mar, 18:41, Marc Assin <raym...@warichet.com> wrote: > On 14 mar, 13:19, Gilles ARNAUD <lifedo...@live.fr> wrote:> Normalement un EIS5, float 32 bits avec virgule... > > Ah ?!? > D'après ma doc (Konnex, July 2004 PAGE 3/24) > EIS5 "2-octet Float Value"
14/03/2009, 22:36:19
> D'après ma doc (Konnex, July 2004 PAGE 3/24)
La doc en question se trouve dans la partie "fichiers" KNX interworking - Datapoint types.pdf apportée par Dibou 608,3 KB 14 jan 2007
14/03/2009, 23:14:52
15/03/2009, 08:58:10
On 14 mar, 21:59, jef2000 <jef2...@ouaye.net> wrote:
> Pour plus d'info sur tous les types KNX, il existe un document > librement disponible sur leur site http://www.knx.org/fileadmin/downloads/0...ard/KNX%20... Le document a été ajouté à la partie "fichiers" (en espérant que ce soit permis) Merci Jean-François |
« Sujet précédent | Sujet suivant »
|
Utilisateur(s) parcourant ce sujet : 2 visiteur(s)