Files
Wx_BLWConfigTools_V02_Prod/pages/device/device.js
2025-12-11 09:50:02 +08:00

150 lines
4.7 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
// 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)
}
}
})