You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 

78 lines
2.2 KiB

const WXAPI = require('./request')
class IotTask{
constructor(lockId,doTask){
this.lockId = lockId
this.response = null;
this.taskContent = '' //锁返回的
this.timer = null //定时器
this.interval = 1000; //任务执行间隔
this.doTask = doTask;
}
run(){
this.timer = setInterval(async () => {
await this.getTask()
const lockeResult = await this.doTask(this.response)
this.taskContent = lockeResult
}, this.interval);
}
clearTimer(){
clearInterval(this.timer)
this.timer = null
}
async getTask(){
//如果获取任务为空
const params = {
code: "zg/bleIotTransmit",
data: {
lockerId: this.lockId,
hexString: this.taskContent
}
}
let res = null
try{
res = await WXAPI.sendCommand(params)
console.log('后台获取的任务',res)
if(res.code != 200){
this.clearTimer()
return
}
if(res.data.sendContentsHexString){
wx.showLoading({
title: '同步中',
})
const len = res.data.sendContentsHexString.length
console.log(len)
this.response = res.data.sendContentsHexString.substring(36,len)
console.log(this.response)
if(!this.response){
wx.showToast({
title: '没有可同步的任务',
icon:'error'
})
wx.hideLoading()
this.clearTimer()
}
}else{
wx.showToast({
title: '没有可同步的任务',
icon:'error'
})
this.clearTimer()
}
}catch(e){
if(e.errMsg == 'request:fail fail:time out'){
wx.showToast({
title: '接口请求超时',
icon: 'error'
})
this.clearTimer()
return
}
}
}
}
module.exports = IotTask