// 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: "正在搜索设备", btHelper: null }, 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: _this.connectToDvice() break; case 3: // 连接成功 break; } }, connectToDvice() { toastUtil.show("开始连接设备") let _this = this // 搜索到 this.data.btHelper.connect(_this.data.connectDevice, function (data) { // console.log("连接成功", data) _this.setStatus(data ? 3 : 4) if (data) { // 蓝牙模式 _this.data.connectDevice.connectType = 1 getApp().globalData.device = _this.data.connectDevice setTimeout(() => { wx.reLaunch({ url: '/pages/index/index', // 替换为首页的路径 }); }, 500); } }) }, getConnectedDevices: async function () { let _this = this const connectedDevices = await this.data.btHelper.getConnectedDevices() console.log("全部设备", connectedDevices) if (connectedDevices.length > 0) { connectedDevices.forEach(element => { console.log('已连接的蓝牙设备:', element); if (element.connectable == true) { _this.data.connectDevice.mac = element.mac _this.data.connectDevice.deviceId = element.deviceId _this.setStatus(2) } }); } else { } return connectedDevices; }, async startSearch() { this.setStatus(0) let _this = this this.data.btHelper.search(async function () { const connectedDevices = await _this.getConnectedDevices() if (connectedDevices.length == 0) { _this.setStatus(1) } }) }, didFindDevice() { let _this = this this.data.btHelper.findDevices(function (devices) { devices.forEach(element => { let deviceId = element.deviceId ?? "" // todo 暂定这样 if (deviceId.includes("D8:24:07:89:31") || // 2axk element.deviceId.includes("F5:A5:43:70:C8:F1") || // 黑色2x element.deviceId.includes("F6:61:D8:24:E5:98") ) { console.log('发现设备2:', element.deviceId, element.uuid, element.mac); if (element.connectable == true) { _this.data.connectDevice.mac = element.mac _this.data.connectDevice.deviceId = element.deviceId _this.data.btHelper.stopSearch() _this.setStatus(2) } } }); }) }, /** * 生命周期函数--监听页面加载 */ onLoad(options) { let _this = this const btHelper = BtHelper.getInstance(); this.data.btHelper = btHelper; // getApp().globalData.btHelper = btHelper.getInstance(); 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) this.setData({ connectDevice: json }) }, /** * 生命周期函数--监听页面初次渲染完成 */ onReady() { }, /** * 生命周期函数--监听页面显示 */ onShow() { }, /** * 生命周期函数--监听页面隐藏 */ onHide() { }, /** * 生命周期函数--监听页面卸载 */ onUnload() { // todo 要关闭吗 // this.data.btHelper.closeBle() }, /** * 页面相关事件处理函数--监听用户下拉动作 */ onPullDownRefresh() { }, /** * 页面上拉触底事件的处理函数 */ onReachBottom() { }, /** * 用户点击右上角分享 */ onShareAppMessage() { } })