Comment obtenir la valeur de température correcte du tableau d'octets

user10539558:

Je suis en train de créer une application BLE où je veux attraper la valeur de la température d'un appareil. J'utilise dispositif de Sitter Temp.

Je UUID = 0000ffe1-0000-1000-8000-00805f9b34fb. De là, je reçois un tableau d'octets.

        // For all other profiles, writes the data formatted in HEX.
        final byte[] data = characteristic.getValue();

        if (data != null && data.length > 0) {
            final StringBuilder stringBuilder = new 
                                               StringBuilder(data.length);
            for(byte byteChar : data)
                stringBuilder.append(String.format("%02X ", byteChar));
            intent.putExtra(EXTRA_DATA, new String(data) + "\n" + 
            stringBuilder.toString());
        }

Voici quelques résultats hexagonaux: AA 06 11 00 00 62 3E 0D --- AA 06 11 00 43 0D 00 67 --- AA 06 11 00 49 00 0D 6D

Quelqu'un peut-il me aide à lire la valeur exacte de ce tableau?

coude:

Après l' ingénierie inverse du IRULU / Guangdong Biolight Meditech Temp Sitter application, il semble que le message a le format suivant :

            0      1      2      3      4      5      6      7
        +------+------+------+------+------+------+------+------+
        |Marker|Length|Type  |Subtyp|Low   |High  |Unused|Chksum|
        +------+------+------+------+------+------+------+------+

Example    AA     06     11     00     3E     0D     00     62 

Les champs sont les suivants:

  • Marqueur : Toujours 0xAA. Marqueur utilisé pour un message delinate. Le format de message semble être conçu pour envoyer un flux de messages. 0xAA indique le début d'un nouveau message.
  • Longueur : La longueur de la charge utile, en octets. Il est la longueur sans marqueur et sans contrôle.
  • Tapez : Le type du message. 0x11 semblent être des messages de température. Il y a aussi un message qui semble tpe 0x12 intéressant (même si je ne comprends pas son but). D' autres types de messages sont ignorés par l'application.
  • Sous - type : Le sous - type de message. Sous - type 0 sont des mesures de température. 1 et 2 Sous - type semble élevé et de faibles avertissements / indicateurs.
  • Faible : Le faible octet de la valeur de température.
  • Haut : L'octet de poids fort de la valeur de la température.
  • Inutilisé : Cet octet semble unsued et mis à 0.
  • Checksum : La somme de contrôle de la charge utile. Il est simplement calculée en additionnant tous les octets de la charge utile ( en commençant par la longueur et se terminant par l' inutilisée champ).

La valeur de température est stockée dans 0,01 degré (degré Celsius probablement). Donc, pour l'extraire, vous calculer:

double temperature = ((message[5] & 0xff) * 256 + (message[4] & 0xff)) * 0.01;

Dans l'exemple ci-dessus, le résultat serait 33,90 ° C.

Je suppose que tu aimes

Origine http://43.154.161.224:23101/article/api/json?id=214906&siteId=1
conseillé
Classement