2783关注9032浏览
一个控制蓝牙小灯的程序,在ios上和开发者工具里面都能正常的延时,但是就是安卓手机不可以。这是什么情况。
出问题的地方就是那个timer函数,安卓手机并没有执行延时而是直接跳过去了,进行下一步的指令了。
var app = getApp();
var display = new Array();
var inst = new Array();
var value = new Array();
var index = 0;
var inputValue = '';
var inputInst = '';
var current = 0;
var x = 0;
let buffer = new ArrayBuffer(20)
let dataView = new DataView(buffer)
dataView.setUint8(0, 0)
dataView.setUint8(1, 0)
dataView.setUint8(2, 0)
dataView.setUint8(3, 0)
dataView.setUint8(4, 0)
dataView.setUint8(5, 0)
dataView.setUint8(6, 0)
dataView.setUint8(7, 0)
dataView.setUint8(8, 0)
dataView.setUint8(9, 0)
dataView.setUint8(10, 0)
dataView.setUint8(11, 0)
dataView.setUint8(12, 0)
dataView.setUint8(13, 0)
dataView.setUint8(14, 0)
dataView.setUint8(15, 0)
dataView.setUint8(16, 0)
dataView.setUint8(17, 0)
dataView.setUint8(18, 0)
dataView.setUint8(19, 0)
Page({
data: {
instructions: ['关闭', '开启', '延时'],
},
onUnload: function () {
wx.closeBLEConnection({
deviceId: app.globalData.targetAdd,
success: function (res) {
app.globalData.connectFlag = false,
app.globalData.searchFlag = false,
app.globalData.targetAdd = 'NoAdd',
console.log(res)
console.log('app.globalData.connectFlag', app.globalData.connectFlag)
console.log('app.globalData.searchFlag', app.globalData.searchFlag)
console.log('app.globalData.targetAdd', app.globalData.targetAdd)
}
})
},
bindPickerChange: function (e) {
console.log('picker发送选择改变,携带值为', e.detail.value)
if (e.detail.value == 0) {
inputInst = '关闭';
}
if (e.detail.value == 1) {
inputInst = '开启';
}
if (e.detail.value == 2) {
inputInst = '延时';
}
this.setData({
index: e.detail.value
})
console.log('指令值: ', inputInst)
},
inputDone: function (e) {
inputValue = e.detail.value
},
inputInstructions: function () {
inst.push(inputInst)
console.log('指令数组', inst)
value.push(inputValue)
console.log('值数组', value)
display.push(inputInst + ": " + inputValue)
cons
-
至过去的我
2044人对此回答表示赞同
我是未来的你,你现在是不是在年找寻小程序答案。你不要感觉诧异,给你来信原因,就是让你不在后悔。今天去学习如何推广小程序,相信......点击查看更多> -
Bellrrrrr
20人对此回答表示赞同
苹果是5s
展开2012回复分享发布于 6年前评论(12)
收起评论
嗯,解决了就好
多谢大神,问题解决了,定义了个函数,强行将value【current】的值转成数值就可以正常延时了:
为什么会拿不到value[current]的值啊?
这个逻辑都这么清楚了怎么检查啊。。。要不你跟说就是系统问题得了我也好交代。。。
不是喔,建议检查代码
啊,太好了!那怎么解决啊?你们是不是也是只有安卓的不行呢?
这边测试有时候会发现拿不到value[current]的值,所以setTimeOut没有延迟相应时间,能拿到value[current]的值会正常执行的
wechatide://minicode/TrjOGjmo7QGR
要不你再提供一个简洁一点的,并且能复现问题的代码片段?
对了,为了便于你测试方便你可以把index页面里面的programMode函数里面的都注释掉,再把那个页面跳转的注释出来这样不需要连接蓝牙设备了。
通过扫码,搜索,进入编程模式之后,用户会输入指令(关闭,开启,延时)以及指令的值(开启关闭的MOS管的编号,延时的毫秒值)。在指令输入完后用户点击执行按钮会根据输入的指令顺序开始自动给连接的蓝牙模块发送指令。
代码片段没有明确复现问题的具体操作,请详细描述