19/05/2011, 20:32:00
Salut,
Effectivement, quand on a tout le code, c'est beaucoup plus facile de
trouver le problème.
C'est la fonction GroupRead qui n'est pas conçue pour retourner une
valeur sur 2 bytes. Comme le commentaire à la fin le laisse penser:
"// return the EIB status, 0=Off, 1=On, xx-dimmer value"
En remplaçant:
for ($i=3; $i<=$len; $i++)
/* printf ("%02X", $buf[$i]);
printf ("\n");
*/
$return=$buf[$i]; // $return=$return.$buf[$i];
par:
if ($len == 3)
$return=$buf[$i];
else
$return=array_slice($buf, 3);
Ca pourrait aller mieux. Ensuite tu peux passer directement le
résultat de GroupRead à la fonction f2_decode.
Je suppose que tu n'utilises pas la fonction GroupRead dans d'autres
scripts pour lire des valeurs sur plusieurs bytes. Vu que dans l'état
actuel elle ne retourne que le dernier byte et oublie purement et
simplement les autres.
A+
Jean-François
On 19 mai, 20:53, "marc.assin" <raym...@warichet.com> wrote:
> @Anthony> le problème viens de GroupRead a priori
> > parce que si j'enlève les printf dans la fonction j'ai bien la valeur 079E
> > qui apparaît et qui correspond bien à 19.5 :
>
> J'ai pas compris
> Dans quelle fonction as-tu enlevé le printf ? et qui fait tout
> marcher ?
>
> @Charles> donc je fais pas le test chez moi
>
> Je pense que ce n'est plus nécessaire.
> Merci Charles
Effectivement, quand on a tout le code, c'est beaucoup plus facile de
trouver le problème.
C'est la fonction GroupRead qui n'est pas conçue pour retourner une
valeur sur 2 bytes. Comme le commentaire à la fin le laisse penser:
"// return the EIB status, 0=Off, 1=On, xx-dimmer value"
En remplaçant:
for ($i=3; $i<=$len; $i++)
/* printf ("%02X", $buf[$i]);
printf ("\n");
*/
$return=$buf[$i]; // $return=$return.$buf[$i];
par:
if ($len == 3)
$return=$buf[$i];
else
$return=array_slice($buf, 3);
Ca pourrait aller mieux. Ensuite tu peux passer directement le
résultat de GroupRead à la fonction f2_decode.
Je suppose que tu n'utilises pas la fonction GroupRead dans d'autres
scripts pour lire des valeurs sur plusieurs bytes. Vu que dans l'état
actuel elle ne retourne que le dernier byte et oublie purement et
simplement les autres.
A+
Jean-François
On 19 mai, 20:53, "marc.assin" <raym...@warichet.com> wrote:
> @Anthony> le problème viens de GroupRead a priori
> > parce que si j'enlève les printf dans la fonction j'ai bien la valeur 079E
> > qui apparaît et qui correspond bien à 19.5 :
>
> J'ai pas compris
> Dans quelle fonction as-tu enlevé le printf ? et qui fait tout
> marcher ?
>
> @Charles> donc je fais pas le test chez moi
>
> Je pense que ce n'est plus nécessaire.
> Merci Charles