Décodage des DPT 8 incorrect

Bonsoir @mika-nt28,

Je pense qu’il y a un souci sur le décodage des DPT 8, dans la classe dpt.class.php.
Code original :

                        case "8":
                                if ($data[0] >= 0x8000)
                                        $data[0] = -(($data - 1) ^ 0xffff);  # invert twos complement
                                $value = $data[0];
                                break;

La valeur remontée est incorrecte (0 pour un nombre positif par ex.).

Après application du code suivant :

                        case "8":
                                $value = $data[0] << 8 | $data[1];
                                if ($value >= 0x8000)
                                        $value = -(($value - 1) ^ 0xffff);  # invert twos complement
                                break;

Cela semble bien mieux.

Je pense que l’encodage n’est également pas bon (il faut un complément à 2).

Je regarderai ça.

2 « J'aime »

La correction sera dans la beta et la stable de demain

2 « J'aime »