我举个例子, 我app可以下发命令,也可以读取服务器信息,
要保证 实时读取环境信息,所以环境信息 每两秒读一次
并且这个环境信息是从单片机发到服务器再发到app的
我此时app上开led , 服务器接受指令,转达下发指令,单片机接受,修改本地led, 再上传家居信息,服务器修改变量,给app
此时有个矛盾就是,我按下led下发命令后,led按钮会因为服务器没接受到单片机上发的修改过的信息,而 返回原来的状态, 等几秒后,才能在app看到按钮滑动
这个就是要解决的, 我方案是,按下按钮后,其他信息照样读,但是默认led按钮下发成功了,所以锁定此状态 ,5秒后, 再检测led和服务器的状态,释放led控制变量
5秒后,再检查是否上传成功,
但是如果app命令没下发成功,5秒后服务器数据和app不一样, 就代表没成功, 就得按服务器的数据来了
我给每个控制变量,都加了这个key,控制变量
其他变量还是正常显示的,所以,我处理操作就是,
按钮按下,触发代表这个功能的函数,
赋予特定key值, 同时修改定时器标志
此时定时器扫描到此变量改变,就开启5秒倒计时
5秒后,自动清除变量,把控制权交给 服务器
每两秒读家居信息的函数,此时在5秒倒计时里面,会通过判断key,从而略过 那个修改的变量,只更新 其他家居信息
5秒后,释放变量,整体读取
之前有bug, 我都是整体读,整体上传,有bug,就修bug