Note de ce sujet :
  • Moyenne : 0 (0 vote(s))
  • 1
  • 2
  • 3
  • 4
  • 5
question sur valeur 2Bytes
#6
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


Messages dans ce sujet
question sur valeur 2Bytes - par christjar26 - 27/05/2010, 18:20:06
question sur valeur 2Bytes - par marc.assin - 27/05/2010, 18:26:30
question sur valeur 2Bytes - par christjar26 - 27/05/2010, 18:35:01
question sur valeur 2Bytes - par christjar26 - 27/05/2010, 18:40:59
question sur valeur 2Bytes - par marc.assin - 27/05/2010, 19:40:54
question sur valeur 2Bytes - par alain - 27/05/2010, 20:32:09
question sur valeur 2Bytes - par christjar26 - 28/05/2010, 18:08:09

Atteindre :


Utilisateur(s) parcourant ce sujet : 1 visiteur(s)