短连接转换网站开发,中国能源建设集团有限公司招聘网,网页开发者工具怎么用,小程序平台介绍怎么写小程序 蓝牙功能 1.授予蓝牙权限2.蓝牙初始化3.监听寻找新设备4.搜索新设备5.建立连接⭐⭐⭐⭐⭐⭐⭐6.监听蓝牙低功耗连接状态改变事件8.监听特征值变化9.发送数据 1.授予蓝牙权限
//1.蓝牙授权
const authBlue (callback, initApp) {app initApp;//鉴定是否授权蓝牙w… 小程序 蓝牙功能 1.授予蓝牙权限2.蓝牙初始化3.监听寻找新设备4.搜索新设备5.建立连接⭐⭐⭐⭐⭐⭐⭐6.监听蓝牙低功耗连接状态改变事件8.监听特征值变化9.发送数据 1.授予蓝牙权限
//1.蓝牙授权
const authBlue (callback, initApp) {app initApp;//鉴定是否授权蓝牙wx.getSetting().then(res {if (!res.authSetting[scope.bluetooth]) {//未授予蓝牙权限return wx.authorize({scope: scope.bluetooth,})} else {//已授予if (callback ! null) {callback({blueAuth: true}) // init() //2.蓝牙初始化}return new Promise(() {})}}).then(() {if (callback ! null) {callback({blueAuth: true}) //回调-app.js-蓝牙权限// init() //2.蓝牙初始化}return new Promise(() {})}).catch(err {if (callback ! null)callback({blueAuth: false})console.err(err);})
}2.蓝牙初始化
//2.蓝牙初始化
const init (onFound) {console.log(2.蓝牙初始化);//打开蓝牙适配器wx.openBluetoothAdapter({mode: central}).then(res {app.globalData.isOpenBleAdapter true //蓝牙适配器已打开wx.onBluetoothAdapterStateChange((res) { //回调---蓝牙适配器状态改变if (!res.available) { //蓝牙适配器是否可用wx.showModal({title: 温馨提示,content: 蓝牙蓝牙适配器不可用请重新启动,showCancel: false})}})onFound(); //监听寻找 新设备 -- 回调函数}).catch(() {//失败wx.showToast({title: 请检查手机蓝牙是否打开,icon: none,})})
}3.监听寻找新设备
//3.监听寻找新设备
const onDeviceFound (addDevicesList) {console.log(3.监听寻找新设备);wx.onBluetoothDeviceFound((res) {const devicesList []for (const item of res.devices) {if (!item.connectable) continue; //无法连接 -- 跳过//过滤设备找出自己想连接的设备 filterDeviceslet device Device.filterDevices(item)//addDevicesList 是一个回调函数将数据更新到 Viewif (device addDevicesList ! null) {// 判断是否已经存在相同id的对象var existingObjIndex devicesList.findIndex(function (obj) {return obj.deviceId device.deviceId;});if (existingObjIndex ! -1) { // 存在相同id的对象// 更新对应位置上的对象属性值Object.assign(devicesList[existingObjIndex], device);} else { // 不存在相同id的对象// 将新对象添加到数组末尾devicesList.push(device);}}}//更新到设备列表addDevicesList(devicesList)})
}4.搜索新设备
//4.搜索新设备
const startDevicesDiscovery (obj) {wx.startBluetoothDevicesDiscovery({allowDuplicatesKey: true, //允许上报同一台设备interval: 1000, //上报间隔时间success: (res) {console.log(4.搜索新设备);// getBluetoothDevices() // 获取蓝牙设备列表},fail: function (res) {wx.showToast({title: 搜索蓝牙外围设备失败,请重新初始化蓝牙!,icon: none,})}})
}5.建立连接⭐⭐⭐⭐⭐⭐⭐
/** 5.建立连接 * param {*} deviceId 要连接的设备MAC* param {*} func 连接后要执行的命令* 1.建立连接* 2.设置MTU setBLEMTU* 3.获取蓝牙服务 UUID getBLEDeviceServices* 4.获取蓝牙服务列表 UUIDS getBLEDeviceCharacteristics* 5.判断UUIDS中哪个服务可用于indicate | notify使用该UUID订阅特征变化 notifyBLECharacteristicValueChange* 6.监听特征值变化onBLECharacteristicValueChange* 7.func({isConnect: true}) //连接成功*/
const createConnect (deviceId, func) {let mtu 209 //协商设置蓝牙低功耗的最大传输单元let serviceId 0000FFE0-0000-1000-8000-00805F9B34FB; //特定的UUIDlet characteristics;wx.createBLEConnection({deviceId}).then((res) { //2.设置MTUif (res.errCode 0 || res.errCode -1) {console.log(1.连接成功);const systemInfo wx.getSystemInfoSync();const platform systemInfo.platform; //Android | IOSif (platform android) {return wx.setBLEMTU({deviceId,mtu});} else if (platform ios) {return {mtu}} else {return {mtu}}} else {console.log(连接失败);func({isConnect: false}) //连接失败return new Promise(() {})}}, error {console.log(error)func({ isConnect: false}) //连接失败return new Promise(() {})}).then((res) { //3.获取蓝牙服务console.log(2.MTU设置成功协商MTU, res.mtu, deviceId, serviceId);return wx.getBLEDeviceServices({deviceId});}, (res) {console.log(2.MTU设置失败, res);func({ isConnect: false}) //连接失败return new Promise(() {})}).then((res) {//4.获取蓝牙服务列表console.log(3.获取蓝牙服务成功, res);for (let i 0; i res.services.length; i) {console.log(发现服务, res.services[i].uuid);if (res.services[i].uuid 0000FFE0-0000-1000-8000-00805F9B34FB) {return wx.getBLEDeviceCharacteristics({deviceId,serviceId});}}},(err) {console.error(3.获取蓝牙服务失败, err);func({ isConnect: false}) //连接失败return new Promise(() {})}).then((res) { //5.判断哪个服务可用于indicate | notifyconsole.log(4.获取UUIDS成功, res);characteristics res.characteristicsfor (let i 0; i characteristics.length; i) {const item characteristics[i];if (item.properties.notify || item.properties.indicate) {return wx.notifyBLECharacteristicValueChange({deviceId: deviceId,serviceId: serviceId,characteristicId: item.uuid,state: true});}}}, (res) {console.log(4.获取UUIDS失败, res);func({ isConnect: false}) //连接失败return new Promise(() {})}).then((res) { //6.监听特征值变化console.log(5.订阅特征变化成功, res);for (let i 0; i characteristics.length; i) {let item characteristics[i];if (item.uuid.substr(0, 8) 0000FFE1) {app.globalData.characteristicId item.uuidbreak;}}func({ isConnect: true}) //连接成功}, (err) {console.log(5.订阅特征变化失败, res);func({ isConnect: false}) //连接失败return new Promise(() {})}).catch((err) {func({ isConnect: false}) //连接失败console.error(err);});
}6.监听蓝牙低功耗连接状态改变事件
//6.监听蓝牙低功耗连接状态改变事件--主动连接或断开连接设备丢失连接异常断开
const onConnectionStateChange (listenBleStatus) {wx.onBLEConnectionStateChange(res listenBleStatus(res))
}8.监听特征值变化
//8.监听特征值变化 -- onBleValueChange 回调函数
const onCharacteristicValueChange (onBleValueChange) {wx.onBLECharacteristicValueChange(res onBleValueChange(res))
}/*** 监听蓝牙设备传输的数据* param {*} res deviceId、serviceId、characteristicId、【value ArrayBuffer 特征最新的值】*/
function onBleValueChange(res) {console.log(监听到数据, res);//处理数据...
}9.发送数据
/** 9.发送数据* param {*} deviceId 设备ID* param {*} command 命令*/
const writeCharacteristicValue (deviceId, command) {return wx.writeBLECharacteristicValue({characteristicId: app.globalData.characteristicId,deviceId: deviceId,serviceId: app.globalData.serviceId,value: command,})
}