18/02/2010, 14:01:38
> Mmmmmh ...
> Pour information, le forum domotique-EIB comporte aussi une partie
"Fichiers", aimablement garnie par ses membres,
Ah voilà, j'ai trouvé ESI11 Data Type “4-Octet Unsigned Value”14
Maintenant la question qui tue :-)
Comment décoder ? Selon le fichier read_knx_grp.pl que Alain nous à mis à
disposition (dans la partie garnie par ses membres :-) ), il décode ESI1
ESI5 et ESI6.
exemple ESI5 :
$knxval = hex($val[0]) * 256 + hex($val[1]);
if (($knxval & 0x8000) != 0) { $sign = 1; } else { $sign = 0; }
$exp = ($knxval >> 11) & 0x0f;
$mant = $knxval & 0x07ff;
if ($sign != 0) {
# 2-complement
$mant -= 1;
$mant = ($mant ^0x07ff) & 0x07ff;
}
$val = $mant * (2 ** $exp) * 0.01;
if ($sign != 0) { $val = -1 * $val; }
Comment je peux faire un pondre un chinois pareil pour ESI11 ?!? Sinon son
astuce fonctionne très bien !
Bonne journée
Chrystof
> Pour information, le forum domotique-EIB comporte aussi une partie
"Fichiers", aimablement garnie par ses membres,
Ah voilà, j'ai trouvé ESI11 Data Type “4-Octet Unsigned Value”14
Maintenant la question qui tue :-)
Comment décoder ? Selon le fichier read_knx_grp.pl que Alain nous à mis à
disposition (dans la partie garnie par ses membres :-) ), il décode ESI1
ESI5 et ESI6.
exemple ESI5 :
$knxval = hex($val[0]) * 256 + hex($val[1]);
if (($knxval & 0x8000) != 0) { $sign = 1; } else { $sign = 0; }
$exp = ($knxval >> 11) & 0x0f;
$mant = $knxval & 0x07ff;
if ($sign != 0) {
# 2-complement
$mant -= 1;
$mant = ($mant ^0x07ff) & 0x07ff;
}
$val = $mant * (2 ** $exp) * 0.01;
if ($sign != 0) { $val = -1 * $val; }
Comment je peux faire un pondre un chinois pareil pour ESI11 ?!? Sinon son
astuce fonctionne très bien !
Bonne journée
Chrystof