定时控制
- 按星期来设置定时开关规则,
- 每天最多允许32组动作,总数最多128组
- 每组可单独设置哪一路在某个时间点开关,时间精度为分钟,一天为:24*60=1440,需要11bit可存储
- 允许按天复制数据
固化存储
- SNAME:按钮显示名称,格式:按钮1名称|按钮2名称|......
- SBIN:遥控编码:bin4对应 16个按钮,每按钮4字节 共64字节 bind_writebin
- 1字节 语音识别编号 1-17;2-18;......;24-40
- 3字节 遥控编码
- STIME:定时数据,每组3字节,共128组,384字节
- 1byte 按钮编号0~F =FF 表示未设置
- 2byte时间存储:undefinedb15-b13:周,0-周日]undefinedb12:动作 0-关;1-开]undefinedb10-b0:分钟]
PSRAM存储结构
- 总存储区用于0x1000-0x3FFF 区域,按32按钮设计,方便未来扩展
按钮信息区:
- 0x1000-0x13FF:每按钮占32字节,共32按钮,占1024字节
- 0x00-0x0F:16字节的显示名称
- 0x10-0x13:4字节遥控编码
- 0x14:1字节语音识别编号 0:未设置 1-17;2-18;......;24-40
- //0x15:开关状态 0-关 1-开
- 0x16-0x17:下次定时时间 0-未设置
- undefinedb15]-0关 1开
- undefinedb14-b0]大于0;相对于本日凌晨0点开始的分钟数
语音索引区:
- 0x1400-0x14FF: 语音识别对应表
- 0x1400:无用
- 0x1401:打开一号设备,vn=1;存储值=按钮编号B0
- 0x140F:打开15号设备,vn=15;存储值=按钮编号B14
- 0x1410:打开16号设备,vn=16;存储值=按钮编号B15
- 0x1411:打开客厅灯,vn=17;存储值=按钮编号0~F
- 01~40:1byte=按钮编号 0~f;
定时数据存储区:
- 0x1500-0x1BFF:定时数据存储,按使用快捷查询定结构
- 按周n存储,每天至多允许32组数据,总数允许128组数据;4字节一组
- 2byte 时间
- 1byte undefinedb0:1-开;0-关]undefinedb7:0固化数据;1-临时数据(执行一次后删除)]
- 1byte 操作按钮编号 FF 表示未启用
- 0x1500-0x15ff:周日
- 0x1600:周一;0x1700周二 18周三 19四 1a五 1b六
- 按周n存储,每天至多允许32组数据,总数允许128组数据;4字节一组
- 0x1c00-0x1cff:基本辅助信息存储
- 1C00-1C06:各周数据计数
- 0x1d00-0x22A0: 当天的1440分钟,每分钟对应一个字节,存储值未当前的time位置编号
- 2300:
动态数据区,不固化存储
- 0x2800-0X2FFF
- 0x2800:HEADER 用于识别是否动态区初始化=0x567ABD
- 0x2810-0x282F: 各个按钮对应的状态 0关1开
- 0x1d00-0x22A0: 当天的1440分钟,每分钟对应一个字节,存储值未当前的time位置编号
代码
本节代码较多,就不再文档中书写,请直接查看工程中代码;
总结
尽可能将设置的数据缩小存储尺寸存储到bind数据固化区,使用时将数据解码到psram中,psram是按照使用方便来规划的数据结构,具有一定的冗余性,待设置完成,将数据又转换到bind固化区固化存储;