2016-10-04 16 views
0

使用randdusing bluetoothle插件離子應用程序,需要閱讀廣告。randdusing/ng-cordova-bluetoothle,解析ble廣告離子

與開始掃描成功的BLE掃描返回:

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

查詢:需要破譯這個JSON數據和該廣告數據轉換爲包含廣告數據的十六進制值陣?廣告數據似乎是base64編碼的。請指教。

回答

0

我爲此製作了一個小輔助函數,如下所示。關鍵是$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)進行編碼。