TMRAppBle/script/module/ble.js

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
}