cordova 调用蓝牙_ionic蓝牙用法

本文介绍如何在Cordova项目中使用cordova-plugin-ble-central插件进行蓝牙操作,包括开启蓝牙、扫描设备、连接设备、读取数据及断开连接。在Android和iOS平台上存在一些差异,例如UUID和服务特性的表示方式,需要根据平台进行适配。
摘要由CSDN通过智能技术生成

插件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

});

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值