// pages/device.js const ecUI = require('../../utils/ecUI.js') const ecBLE = require('../../utils/ecBLE.js') let ctx let isCheckScroll = true let isCheckRevHex = false let isCheckSendHex = false let sendData = '' Page({ /** * 页面的初始数据 */ data: { textRevData: '', scrollIntoView: 'scroll-view-bottom', }, /** * 生命周期函数--监听页面加载 */ onLoad() { ctx = this isCheckScroll = true isCheckRevHex = false isCheckSendHex = false sendData = '' ecBLE.setChineseType(ecBLE.ECBLEChineseTypeGBK) //on disconnect ecBLE.onBLEConnectionStateChange(() => { ecUI.showModal('提示', '设备断开连接') }) //receive data ecBLE.onBLECharacteristicValueChange((str, strHex) => { let data = ctx.data.textRevData + ctx.dateFormat('[hh:mm:ss,S]:', new Date()) + (isCheckRevHex ? strHex.replace(/[0-9a-fA-F]{2}/g, ' $&') : str) + '\r\n' // console.log(data) ctx.setData({ textRevData: data }) if (isCheckScroll) { if (ctx.data.scrollIntoView === "scroll-view-bottom") { ctx.setData({ scrollIntoView: "scroll-view-bottom2" }) } else { ctx.setData({ scrollIntoView: "scroll-view-bottom" }) } } }) }, /** * 生命周期函数--监听页面卸载 */ onUnload() { ecBLE.onBLEConnectionStateChange(() => { }) ecBLE.onBLECharacteristicValueChange(() => { }) ecBLE.closeBLEConnection() }, checkScroll(e) { if (e.detail.value.length) isCheckScroll = true else isCheckScroll = false }, checkRevHex(e) { if (e.detail.value.length) isCheckRevHex = true else isCheckRevHex = false }, checkSendHex(e) { if (e.detail.value.length) isCheckSendHex = true else isCheckSendHex = false }, inputSendData(e) { sendData = e.detail.value }, btClearTap() { this.setData({ textRevData: '' }) }, btSendTap() { if (isCheckSendHex) { let data = sendData .replace(/\s*/g, '') .replace(/\n/g, '') .replace(/\r/g, '') if (data.length === 0) { ecUI.showModal('提示', '请输入要发送的数据') return } if (data.length % 2 != 0) { ecUI.showModal('提示', '数据长度只能是双数') return } if (data.length > 488) { ecUI.showModal('提示', '最多只能发送244字节') return } if (!new RegExp('^[0-9a-fA-F]*$').test(data)) { ecUI.showModal('提示', '数据格式错误,只能是0-9,a-f,A-F') return } ecBLE.writeBLECharacteristicValue(data, true) } else { if (sendData.length === 0) { ecUI.showModal('提示', '请输入要发送的数据') return } let tempSendData = sendData.replace(/\n/g, '\r\n') if (tempSendData.length > 244) { ecUI.showModal('提示', '最多只能发送244字节') return } ecBLE.writeBLECharacteristicValue(tempSendData, false) } }, dateFormat(fmt, date) { let o = { 'M+': date.getMonth() + 1, //月份 'd+': date.getDate(), //日 'h+': date.getHours(), //小时 'm+': date.getMinutes(), //分 's+': date.getSeconds(), //秒 'q+': Math.floor((date.getMonth() + 3) / 3), //季度 S: date.getMilliseconds(), //毫秒 } if (/(y+)/.test(fmt)) fmt = fmt.replace( RegExp.$1, (date.getFullYear() + '').substr(4 - RegExp.$1.length) ) for (var k in o) if (new RegExp('(' + k + ')').test(fmt)) { // console.log(RegExp.$1.length) // console.log(o[k]) fmt = fmt.replace( RegExp.$1, RegExp.$1.length == 1 ? (o[k] + '').padStart(3, '0') : ('00' + o[k]).substr(('' + o[k]).length) ) } return fmt }, checkChinese(e){ if(e.detail.value==='gbk'){ ecBLE.setChineseType(ecBLE.ECBLEChineseTypeGBK) }else{ ecBLE.setChineseType(ecBLE.ECBLEChineseTypeUTF8) } } })