使用Javascript从BLE设备理解UINT8

使用Javascript从BLE设备理解UINT8,javascript,bluetooth-lowenergy,Javascript,Bluetooth Lowenergy,我似乎无法理解BLE设备电池服务的结果。我正在使用: 如果我将响应字符串化,我会得到以下结果: (“0”:“57”) 使用的代码: function readBttnBattery() { var devid = localStorage.getItem('vBttn'); ble.read(devid, '180f', '2a19', function(t) { var data = new Uint8Arr

我似乎无法理解BLE设备电池服务的结果。我正在使用:

如果我将响应字符串化,我会得到以下结果:

(“0”:“57”)

使用的代码:

function readBttnBattery() {
    var devid = localStorage.getItem('vBttn');
    ble.read(devid, '180f',
             '2a19', 
             function(t) {
        var data = new Uint8Array(t)
        console.log('button Battery:');
        console.log(' BatLev: ' + JSON.stringify(new Uint8Array(t)));
    }, function(f) {
        console.log(f);
    });
}
但当我使用另一个应用程序并连接到该设备时,它会给我一个电池电量的图形相似性,以及它在90年代的高度。所以,当我的应用程序给我57,我有点困惑

我没有正确地阅读“57”。如果我将
数据
通过以下方式解码:

function bytesToString(buffer) {
return String.fromCharCode.apply(null, new Uint8Array(buffer));
}
如果给我号码“9”。这应该是90%吗

我对此有点困惑,所以任何帮助都将不胜感激

更新

它看起来确实有点凌乱,再多读一读:

根据我在此给出的理解,我的应用程序57中的数字似乎是正确的:

因此,我们必须假设,其中一个应用程序的数字不正确。我将找到另一个应用程序,看看是否可以获得第三个视图

但我会假设57=57%,除非其他人有想法:)

谢谢

添加不需要的假设


是介于0和100之间的8位无符号整数,表示电池电量百分比。介于1和255之间的值是“保留的”-与未使用的值相同。

对不起,我使用的是插件,它代表57/64吗?(这是89%…)@dandavis Hiya,64是从哪里来的?一个常见的混淆来源是BLE用二进制完成所有事情,所以你看到的“57”很可能是十六进制的百分比。“64”是十六进制表示100。但是,不能执行57/64并将其视为十进制。“57”是十进制的87,很可能你的电池是87%。@TimTisdall谢谢你,Tim,新电池高于57%更合理。因此,我将以你为例。再次感谢:)谢谢你的评论,我确实看了那个页面,但它仍然不清楚如何解释这个数字。考虑到这一点,我得到了两种不同的回答。8位整数是一个字节,所以在我的应用程序中,响应是57。但它并没有解释这个数字的含义?0到100之间的百分比需要以什么样的确切方式进行解释?谢谢,正如我在OP中指出的,我得到了相互矛盾的结果,由于电池是全新的,不太可能,但也不是不可能,达到57%。正如Tim在上面所评论的,数字是二进制的,这更有意义。然而,由于它是一款全新的电池,甚至89%的电池都让人觉得它是正确的。但我非常感谢你抽出时间:)