// pages/connectBle/connectBle.js const btHelper = require('../../devices/bt_helper'); const toastUtil = require('../../utils/toast_util'); import routeUtil from '../../utils/route_util' import route_constant from '../../utils/route_constant.js' Page({ /** * 页面的初始数据 */ data: { connectDevice: {}, nvabarData: { showCapsule: 1, //是否显示左上角图标 1表示显示 0表示不显示 title: '连接设备', //导航栏 中间的标题 callback() { wx.navigateBack({ delta: 1, }) } }, connectStatus: 0, searchTips: "正在搜索设备,请保持开机状态…", subTips: "确认手机蓝牙已打开", buttonTips: "正在搜索设备" }, setStatus(bleType) { var searchTips = "" var subTips = "" var buttonTips = "" let name = this.data.connectDevice.name; console.log("搜索状态", bleType) switch (bleType) { case 0: // 搜索中 searchTips = "正在搜索设备,请保持开机状态…" subTips = "确认手机蓝牙已打开" buttonTips = "正在搜索设备" break; case 1: // 搜索失败 searchTips = "未搜索到" + name subTips = "请检查设备是否被其他手机连接,或在手机蓝牙忽略掉原来的蓝牙连接重新连接。" buttonTips = "重新搜索" break; case 2: // 搜索到 searchTips = "搜索到" + name subTips = "" buttonTips = "连接" break; case 3: // 连接成功 searchTips = "搜索到" + name subTips = "" buttonTips = "连接成功" break; case 4: // 连接失败 searchTips = "未连接到" + name subTips = "请检查设备是否被其他手机连接,或在手机蓝牙忽略掉原来的蓝牙连接重新连接。" buttonTips = "重新搜索" break; } this.setData({ searchTips: searchTips, subTips: subTips, buttonTips: buttonTips, connectStatus: bleType }) }, async connectDeviceTap() { let _this = this console.log("点击搜索状态", this.data.connectStatus) switch (this.data.connectStatus) { case 0: // 搜索中 break; case 1: case 4: // 搜索失败,点击重新搜索 _this.startSearch() break; case 2: // 搜索到 btHelper.connect(element, function (data) { // console.log("连接成功", data) toastUtil.show("开始连接设备") _this.setStatus(data ? 3 : 4) // 蓝牙模式 _this.data.connectDevice.connectType = 1 getApp().globalData.device = _this.data.connectDevice setTimeout(() => { wx.reLaunch({ url: '/pages/index/index', // 替换为首页的路径 }); }, 500); }) break; case 3: // 连接成功 break; } }, getConnectedDevices: async function () { let _this = this const connectedDevices = await btHelper.getConnectedDevices() console.log("全部设备", connectedDevices) if (connectedDevices.length > 0) { connectedDevices.forEach(element => { console.log('已连接的蓝牙设备:', element); _this.setStatus(3) }); } else { } return connectedDevices; }, async startSearch() { this.setStatus(0) let _this = this btHelper.search(async function () { const connectedDevices = await _this.getConnectedDevices() if (connectedDevices.length == 0) { _this.setStatus(1) } }) }, didFindDevice() { let _this = this btHelper.findDevices(function (devices) { devices.forEach(element => { console.log('发现设备:', element.deviceId, element.uuid, element.mac); let deviceId = element.deviceId ?? "" // todo if (deviceId.includes("D8:24:07:89:31") || element.deviceId.includes("F5:A5:43:70:C8:F1") || element.deviceId.includes("D1:4D:DA:76:42:50") ) { btHelper.stopSearch() _this.setStatus(2) } }); }) }, /** * 生命周期函数--监听页面加载 */ onLoad(options) { let _this = this btHelper.initBluetooth(function (adapterState, hasPermission) { console.log("蓝牙状态", adapterState, hasPermission) if (adapterState && hasPermission) { _this.setStatus(0) _this.startSearch() } else { _this.setStatus(1) } }) _this.didFindDevice() let json = JSON.parse(options.param) console.log(json) let device = json this.setData({ connectDevice: device }) }, /** * 生命周期函数--监听页面初次渲染完成 */ onReady() { }, /** * 生命周期函数--监听页面显示 */ onShow() { }, /** * 生命周期函数--监听页面隐藏 */ onHide() { }, /** * 生命周期函数--监听页面卸载 */ onUnload() { // todo 要关闭吗 btHelper.closeBle() }, /** * 页面相关事件处理函数--监听用户下拉动作 */ onPullDownRefresh() { }, /** * 页面上拉触底事件的处理函数 */ onReachBottom() { }, /** * 用户点击右上角分享 */ onShareAppMessage() { } })