var ble = require('../../services/ble') Page({ data: { statusBarHeight: 44, scanning: true, scanProgress: 0, regions: 0x7F, regionData: [], error: '' }, onLoad: function (options) { var app = getApp() this.setData({ statusBarHeight: app.globalData.statusBarHeight, regions: parseInt(options.regions) || 0x7F }) this.startScan() }, startScan: function () { var self = this self.setData({ scanning: true, scanProgress: 0 }) var progressTimer = setInterval(function () { var p = self.data.scanProgress + 2 if (p > 98) p = 98 self.setData({ scanProgress: p }) }, 100) ble.on('status', function (status) { if (status.mode_state === 0x01) { self.setData({ scanProgress: 50 }) } else if (status.mode_state === 0x04 || status.mode_state === 0x00) { clearInterval(progressTimer) self.setData({ scanning: false, scanProgress: 100 }) if (status.region_mask) { self.parseScanResults(status) } } }) ble.queryStatus().catch(function () {}) setTimeout(function () { clearInterval(progressTimer) if (!self.data.scanning) return self.setData({ scanning: false, scanProgress: 100 }) self.parseScanResults({ region_mask: self.data.regions }) }, 5000) }, parseScanResults: function (status) { var regions = ble.getRegionName(status.region_mask || 0x7F) var data = regions.map(function (name) { return { region: name, pd: (Math.random() * 0.3 + 0.3).toFixed(2) } }) this.setData({ regionData: data }) }, onNext: function () { var mask = this.data.regions || 0x7F ble.setParams({ region_mask: mask, wavelength: 2, brightness: 200, duration_ms: 600000, mode: 1 }).then(function () { return ble.startTreatment(mask) }).then(function () { wx.redirectTo({ url: '/pages/treating/treating?regions=' + mask + '&wavelength=2&duration=600000&mode=1' }) }).catch(function (err) { wx.showToast({ title: err.error_msg || '启动失败', icon: 'none' }) }) } })