randdusing / ng-cordova-bluetoothle,解析ble广告离子

时间:2016-10-04 03:45:02

标签: angularjs cordova bluetooth-lowenergy ngcordova

使用randdusing bluetoothle插件进行离子应用,需要阅读广告。

ble扫描返回Start Scan Success:

{"address":"14::30:c6:60:e8;9f","name":null,"rssi":-50,"advertisement":"AgEGG/9SVgIADSw5YTNlMTQAAAJlAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA;=","status":"scanResult"}

查询:需要解密此json数据并将此广告数据转换为包含广告数据十六进制值的数组?广告数据似乎是base64编码的。请指教。

1 个答案:

答案 0 :(得分:1)

我为此目的制作了一个小帮手功能,如下所示。关键是$cordovaBluetoothLE.encodedStringToBytes,您可以在文档https://github.com/randdusing/ng-cordova-bluetoothle中看到。

var encodedToByteString = function encodedToByteString(input) {
    var val = $cordovaBluetoothLE.encodedStringToBytes(input);
    var byteStr = "";
    for (var i = 0; i < val.length; i++) {
        var byte = val[i].toString(16);
        if (byte.length == 1) byte = "0" + byte;
        byteStr += byte;
    }
    return byteStr;
};

相反的操作也是如此 - 即发送数据。首先需要将十六进制字符串放入一个字节数组中,然后通过$cordovaBluetoothLE.bytesToEncodedString(value)对其进行编码。