ionic藍牙用法

插件cordova官網cordova-plugin-ble-central

1.開啓本機藍牙android

ble.enable(
  function() {
    console.log("Bluetooth is enabled");
  },
  function() {
    console.log("The user did *not* enable Bluetooth");
  }
);ios

這方法是開啓藍牙功能的方法,在android上會彈出是否開啓藍牙的提示框,肯定會開啓藍牙功能,iOS上有提示,可是點擊肯定也不會打開,好像是iOS的權限不容許,坑,數組

2.掃描藍牙app

ble.scan([], 10, function (device) {//成功的回調函數
  $scope.devices = [];
  $scope.devices.push(device);
  $scope.$apply(function () {
    $scope.devices.push(device);
  });ionic

  return $scope.devices;
  }, function(){函數

    //失敗的回調函數post

  }ui

);spa

藍牙掃描的方法,第二個參數10指的掃描時間,單位是秒,device是掃描的設備插件

3.鏈接其餘設備藍牙

$scope.connectFun=function(device){

  ble.connect(device.id, $scope.onConnected, $scope.onError);

}

鏈接藍牙的方法,第一個參數是你掃描到的設備的id,後面的是成功和失敗的回調

4.讀取數據

readCounter = setInterval(function () {
  ble.read(device.id, $scope.serviceUUID, $scope.counterCharacteristic, $scope.onDataReader, $scope.onReadError);
}, 1000);

讀取已鏈接藍牙的數據,我用了個定時器,1秒讀一次,

device.id:藍牙id,同第3的device.id

$scope.serviceUUID:藍牙的UUID,具體不懂,每一個藍牙都有,可是這個值須要注意的地方就是它在android和ios上的寫法不同,好比在android上它的值是xxxxfff0-xxxx-xxxx-xxxx-xxxxxxxxxxx,那麼它在ios上就是FFF0,這個能夠用ionic.Platform.isAndroid()進行平臺判斷

$scope.counterCharacteristic:藍牙的特性值,寫法跟UUID相似,在android和ios的差別寫法也跟UUID同樣,剛開始我在android上寫好功能後在iOS上連不上藍牙問題就出在了這裏

$scope.onDataReader:成功的回調,能夠進行讀取數據

$scope.onReadError:失敗的回調

5.讀取數據擴充

$scope.onDataReader=function(buffer){

  //buffer就是藍牙讀取的數據,可是須要轉換才能被引用

  var data = new Uint8Array(buffer);//Uint8Array對象:8 位無符號整數值的類型化數組。內容將初始化爲 0。若是沒法分配請求數目的字節,則將引起異常。

  //這裏能夠一步步打印data而後按須要轉出所需的數據

  //將值賦值給頁面上綁定的變量時,若是變量沒有變化,試着用

  $scope.$apply(function(){

    //將計算後的數據給變量賦值,要用$apply涉及到了ng的髒值檢查機制,有興趣能夠去搜搜相關資料

  })

}

6.斷開藍牙

ble.disconnect(device.id, function(){
  //do something

}, function(){
  //do something
});

功能類似的話,記得斷開後中止定時器

相關文章
相關標籤/搜索