Hello,
j'ai un petit souci je cherche a exploiter une température pour faire
des graphs,
ma valeur est donc en 2bytes mais je n'arrive pas a la transformé en
valeur en °C,
quand je transforme l'hexa vers decimal cela me donne une valeur
érroné....
des idées??
On 27 mai, 19:20, christjar26 <christopher.jary.e...@hotmail.fr>
wrote:
> ma valeur est donc en 2bytes mais je n'arrive pas a la transformé en
> valeur en °C,
> quand je transforme l'hexa vers decimal cela me donne une valeur
> érroné....
Faudrais savoir le Data Type exact, j'en vois au moins 3 sur 2 bytes
(format différent)
c'est une valeur flottante si c'est ca que tu appelle type...
On 27 mai, 19:40, christjar26 <christopher.jary.e...@hotmail.fr>
wrote:
> c'est une valeur flottante
OK, il n'y a qu'un format, c'est le EIS5
> si c'est ca que tu appelle type...
heuu, j'emploie la terminologie KNX, "Interworking Datapoint types"
plus communément Data Type (je ne me rapelle plus si c'est le nouveau
nom ou toujours l'ancien)
Tu as déjà jeté un oeil dans la partie "Fichiers" ?
ets_03_07_02 Datapoint Types v13 AS.pdf
Salut
Selon la terminologie KNX, le flottant sur 16 bits correspondant au
data types 9.*.
Voici l'algo de décodage (en Perl) que j'utilise
Considérant que data[1] contient l'octet de poids fort, et data[2]
l'octet de poids faible du mot de 16 bits.
my $sign = $data[1] & 0x80;
my $exp = ($data[1] & 0x78) >> 3;
my $mant = (($data[1] & 0x7) << 8) | $data[2];
$mant = -(~($mant - 1) & 0x7ff) if $sign != 0;
$val = (1 << $exp) * 0.01 * $mant;
return $val;
En d'autres termes, le 16 bits est décomposé en :
- 1 bit de signe (bit 15)
- 4 bits d'exposant
- 11 bits de mantisse, avec complément à 2 pour les négatifs
Alain
merci pour les infos, c'est pas tout rose mais je vais bossé dessus.
En effet j'aitrouvé un fichier interessant sur la composition d'un
code hexa en EIS5!