zoukankan      html  css  js  c++  java
  • ionic蓝牙用法

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

    1.开启本机蓝牙

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

    这方法是开启蓝牙功能的方法,在android上会弹出是否开启蓝牙的提示框,确定会开启蓝牙功能,iOS上有提示,但是点击确定也不会打开,好像是iOS的权限不允许,坑,

    2.扫描蓝牙

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

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

        //失败的回调函数

      }

    );

    蓝牙扫描的方法,第二个参数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
    });

    功能相似的话,记得断开后停止定时器

  • 相关阅读:
    先做人,再做事
    当ligerui的grid出现固定列与非固定列不在同一水平线上时,改怎么处理
    权限设计的idea
    ligerUI问题
    在程序出现问题,当找不到错误时,第一时间用try ,catch包括起来
    当页面是本地页面时,通过ajax访问tomcat里的action,传递的参数在action里并不能识别
    好句子
    js Uncaught TypeError: undefined is not a function
    Photoshop学习笔记(一)
    microsoft project 出现不能保存为xls文件时可以按照如下方法解决
  • 原文地址:https://www.cnblogs.com/nullman/p/5869331.html
Copyright © 2011-2022 走看看