固化数据
在实际使用过程中,有些数据存储在全局共享数据区,虽然切换页面不丢失数据,但是一断电就会丢失;在实际使用过程中,诸如密码、校准数据、设置数据等需要掉电不丢失,这些数据就是我们所说的固化数据;
因此固化数据实际上是共享数据区的一个子集,在使用的时候和使用全局共享数据区里的变量一样,即用bind_get 和 bind_set 进行读写;对于固化数据这个子集来说,在系统上电的时候回自动将数据加载到全局共享区的RAM中,然后就可以直接使用bind_get来读取使用;
那么如何来确定固化数据这个子集呢?首先我们来看这个数据区采用的是KV数据结构,也就是常说的key==>value 结构,因此指定相应的key就可以确定哪些数据需要固化,剩下的key就是不需要固化的。
指定固化数据的方法有两种:
方法一:使用上位机参数界面来指定
在需要初始化的变量中添加key以及默认值,即可指定这个key变量是固化变量;
详细设置方法参见:inisetup
方法二:由语句指定
//第一步:在全局数据区存储“姓名”这个key变量
bind_set("姓名","张三");
//第二步:指定固化变量
memaddkey("姓名");
//第三步:将固化变量存储到flash中
memsave();
//此时 姓名=张三,再开机姓名也等于张三
- 可以使用memaddkey(str key);来添加新的存储变量,但该变量必须事先存在
- 详细参见memaddkey
获取存储变量值:
- 开机后,系统自动加载存储变量到bind系统中,如果某个控件的属性绑定此变量,则直接可以显示;
- 程序中使用:bind_get("变量名key");来获取这个值
存储新的变量值:
- 当变量值发生变化时,可以使用 memsave()语句将值存储到flash中
- 但是要注意找到合适频率存储,毕竟flash是有写寿命的,严禁在循环中调用 memsave 语句,这样可能写坏flash存储器;
- 详细参见:memsave
备注
- 系统允许存储64个bind变量到flash中,在开机的时候会自动加载,也就是这些变量可以掉电存储
- 实际操作中,像背光亮度,触摸屏校准参数等信息也是存储到此区域;
- 每个bind变量可以是int,也可以是str类型,当64个参数如果不够的话,可以使用str类型合并多个参数到一个字符串中;此时需要字符串使用strlist 等方式存储;
- 所有的字符串累计长度不能超过3K长度;