150 lines
4.6 KiB
JavaScript
150 lines
4.6 KiB
JavaScript
var ble = null
|
|
var bleUtils = {
|
|
initBle:function(){
|
|
ble = api.require('ble');
|
|
},
|
|
initManager:function(param,callback){
|
|
ble.initManager(param, function (ret) {
|
|
callback(ret)
|
|
});
|
|
},
|
|
scan:function(param,callback){
|
|
ble.clearAllSimpleNotifyData();
|
|
ble.scan(param, function (ret) {
|
|
callback(ret)
|
|
});
|
|
},
|
|
stopScan:function(){
|
|
ble.stopScan()
|
|
},
|
|
getPeripheral:function(callback){
|
|
ble.getPeripheral(function (ret) {
|
|
if (ret.peripherals.length > 0) {
|
|
var li = [];
|
|
ret.peripherals.forEach(function (p) {
|
|
if (undefined !== p.name) {
|
|
if (p.name.indexOf("TMR_BLE") === -1){
|
|
return false
|
|
}else{
|
|
console.log(p.name)
|
|
li.push({"id":p.uuid,"name":p.name})
|
|
}
|
|
}
|
|
});
|
|
callback(li)
|
|
}
|
|
});
|
|
},
|
|
isConnected:function (param,callback){
|
|
ble.isConnected(param, function(ret) {
|
|
if (ret.status) {
|
|
// console.log('已连接');
|
|
}
|
|
callback(ret.status)
|
|
});
|
|
},
|
|
disconnect:function(param,callback){
|
|
ble.disconnect(param, function(ret, err) {
|
|
if (ret.status) {
|
|
console.log("断开连接成功!");
|
|
}
|
|
callback(ret,err)
|
|
});
|
|
},
|
|
connect:function(param,callback){
|
|
bleUtils.isConnected(param,function (ret){
|
|
if (ret.status) {
|
|
console.log('已连接');
|
|
callback(ret)
|
|
}else {
|
|
ble.connect(param, function (ret, err) {
|
|
console.log(JSON.stringify(err))
|
|
callback(ret,err)
|
|
});
|
|
}
|
|
})
|
|
},
|
|
setMtu:function(param,callback){
|
|
//设置MTU包大小
|
|
ble.setMtu({
|
|
peripheralUUID: param.peripheralUUID,
|
|
mtu:param.mtu
|
|
},function(ret){
|
|
callback(ret)
|
|
});
|
|
},
|
|
discoverService:function(param,callback){
|
|
|
|
ble.discoverService(param, function (ret) {
|
|
console.log("discoverService");
|
|
if (ret.services.length > 0) {
|
|
console.log("发现服务成功!");
|
|
ret.services.forEach(function (ret4) {
|
|
if (ret4.indexOf("0000ffe") !== -1) {
|
|
if (ret4 && ret4.length > 0) {
|
|
//发现特征
|
|
bleUtils.discoverCharacteristics({
|
|
serviceUUID: ret4,
|
|
peripheralUUID: param.peripheralUUID
|
|
}, function (ret5) {
|
|
if(ret5.indexOf("0000ffe2")!==-1){
|
|
return false
|
|
}
|
|
console.log(ret4)
|
|
console.log(ret5)
|
|
callback({
|
|
peripheralUUID: param.peripheralUUID,
|
|
serviceUUID: ret4,
|
|
characteristicUUID: ret5
|
|
})
|
|
});
|
|
}
|
|
|
|
}
|
|
});
|
|
} else {
|
|
console.log("发现服务失败!");
|
|
}
|
|
});
|
|
},
|
|
discoverCharacteristics:function(param,callback){
|
|
ble.discoverCharacteristics(param, function (ret) {
|
|
let res = '';
|
|
if (ret.characteristics.length > 0) {
|
|
// console.log("发现特征成功!");
|
|
ret.characteristics.forEach(function (s) {
|
|
if (s.serviceUUID === param.serviceUUID) {
|
|
callback(s.uuid);
|
|
}
|
|
});
|
|
} else {
|
|
console.log("发现特征失败!");
|
|
callback(res);
|
|
}
|
|
})
|
|
},
|
|
setNotify:function(param,callback){
|
|
ble.setNotify(param, function (ret) {
|
|
callback(ret.characteristic.value)
|
|
})
|
|
},
|
|
/*发送消息到蓝牙*/
|
|
writeValueForCharacteristic(param, callback) {
|
|
ble.writeValueForCharacteristic(param, function (ret) {
|
|
// console.log(param.value)
|
|
if (ret.status) {
|
|
// console.log("发送成功");
|
|
} else {
|
|
console.log("发送失败:"+param.value);
|
|
// msgList.push("FF0A000404140414");
|
|
}
|
|
callback(ret);
|
|
});
|
|
}
|
|
|
|
}
|
|
|
|
export {
|
|
bleUtils
|
|
}
|