wepo-写入数据到掉电存储空间

(仅k0系列/x系列支持)

注意

第一次使用掉电存储空间前(新屏幕),必须对掉电存储空间进行初始化 如何对掉电存储空间进行初始化

未初始化的掉电存储空间里面有什么数据是不确定的,可能会导致程序运行出错,例如会导致模拟器中的效果与串口屏实物的效果不一致。

存储空间的读写范围是0-1023,当读写的是val属性时,最后一个读写的位置是1020,因为当读写1020时,其读写范围是1020-1023。

危险

危险提示!!!

掉电存储空间写入寿命有限,请勿频繁擦写,只建议存储低频次修改的数据,例如用户名,密码等,写入消耗掉电存储空间寿命,读取不消耗掉电存储空间寿命

K0系列是板子上有物理eeprom,所以每个byte标称100W次写入寿命

X系列使用flash来模拟eeprom,10W次寿命

掉电存储空间就像1张纸一样,读取不消耗寿命,但是写入时需要擦除,此时纸张越来越薄,直到有一天纸张破了,就无法写入了,这将会导致屏幕功能异常!!!

不建议用户使用掉电存储空间来记录开关机时间!!!

如果以1秒1次的速度向eeprom写入数据,一天将会写入86400次左右,大约1-10天的时间便会将掉电存储空间的寿命用尽!!!

写入数据后不能马上从原有位置读取数据,需等待几秒后再读取

写入数据后不允许立刻断电,需等待几秒后再断电

wepo-att,add

att:变量/常量

add: 用户存储区位置(从0开始)

wepo-示例1

//将t0.txt的内容写入用户存储区的第10位置,在储存区中的占用空间为t0.txt的最大设置值+1,即t0的txt_maxl属性的值+1
//例如控件的txt_maxl等于10,则使用wepo写入时总共需要占用11个字节,占用的地址为10-20
//下一个写入的地址至少为21,否则会覆盖之前的数据导致数据丢失
wepo t0.txt,10
../_images/wepo_1.jpg

wepo-示例2

//将字符串“abcd”写入用户存储区的第10位置,在储存区中占用大小为5字节
//(“abcd”共4字节加上0x00共5字节),实际占用地址为30-34
//下一个写入的地址至少为35,否则会覆盖之前的数据导致数据丢失
wepo "abcd",30
../_images/wepo_2.jpg

wepo-示例3

//将数值125写入用户存储区的第10位置
//数值类型在储存区中占用大小固定为4字节,实际占用地址为40-43
//下一个写入的地址至少为44,否则会覆盖之前的数据导致数据丢失
wepo 125,40
../_images/wepo_3.jpg

备注:

1.写入内容为变量字符串(例如wepo t0.txt,0)的时候,在储存区中的占用空间为此控件的最大字符数+1;

2.写入内容为常量字符串(例如wepo “abcd”,0)的时候,在储存区中的占用空间为此常量字符串的实际字符数+1,多出来的一个字节是为了存储字符串结束符0x00。

3.写入内容为变量数值(例如wepo n0.val,0)或常量数值(例如wepo 123,0)的时候,在储存区中的占用空间统一为4字节。

4.使用用户存储区读写操作过程中请切记规划好数据区位置,以免位置交错引起数据覆盖错乱。

5.用户存储区大小为1k,位置为0-1023

wepo-应用实例

存储多个val属性

 1 //实际写入40-43,共4字节的掉电存储空间空间
 2 wepo n0.val,40
 3
 4 //实际写入44-47,共4字节的掉电存储空间空间
 5 wepo n1.val,44
 6
 7 //实际写入48-51,共4字节的掉电存储空间空间
 8 wepo n2.val,48
 9
10 //实际写入52-55,共4字节的掉电存储空间空间
11 wepo n3.val,52
../_images/wepo_4.jpg

存储多个txt属性

假设所有的txt_maxl均为10,每次写入txt属性时,还需要加上字符串结束符 \0 ,因此每次会占用11个字节的掉电存储空间空间

 1 //实际写入40-50,共11字节的掉电存储空间空间
 2 wepo t0.txt,40
 3
 4 //实际写入51-61,共11字节的掉电存储空间空间
 5 wepo t1.txt,51
 6
 7 //实际写入62-72,共11字节的掉电存储空间空间
 8 wepo t2.txt,62
 9
10 //实际写入73-83,共11字节的掉电存储空间空间
11 wepo t3.txt,73
../_images/wepo_5.jpg

使用名称组存储n0-n9多个连续的val属性,请确保n0-n9的id号是连续的

1 eepAddr.val=40
2 for(sys0=n0.id;sys0<=n9.id;sys0++)
3 {
4     wepo b[sys0].val,eepAddr.val
5     eepAddr.val+=4
6 }

注意

怎么写进去的数据就怎么读出来,以字符串方式写进去的数据,就要读取到字符串属性中,以数值类型写进去的数据,就要读取到数值类型属性中

接下来演示将n0-n9从eeprom中读取出来

1 eepAddr.val=40
2 for(sys0=n0.id;sys0<=n9.id;sys0++)
3 {
4     repo b[sys0].val,eepAddr.val
5     eepAddr.val+=4
6 }

wepo-问答测试

1.wepo n0.val,100 ,下一个wepo指令写入的位置是哪里

提示

val变量固定占用4字节,因此 wepo n0.val,100 这个值占用了 100~103 的位置,下一个写入位置是104。

2.wepo t0.txt,200 ,t0的txt_maxl属性为20,下一个wepo指令写入的位置是哪里

提示

在储存区中的占用空间为t0.txt_maxl的值+1,即占用了21字节,占用了 200~220 的位置(不足的部分会被写入为0x00),下一个写入位置是221。

3.wepo “tjcwiki”,300 ,下一个wepo指令写入的位置是哪里

提示

“tjcwiki”这个字符串的长度为7,在储存区中的占用空间为7+1,即占用了8字节,占用了 300~307 的位置,下一个写入位置是308。

wepo指令-样例工程下载

演示工程下载链接:

《多种控件演示》演示工程下载

《数字控件写入和读取eeprom》演示工程下载

《文本控件写入和读取eeprom》演示工程下载

wepo指令-相关链接

如何对掉电存储空间进行初始化

repo-从掉电存储空间读取数据

wept-通过串口透传数据到掉电存储空间

rept-从掉电存储空间读取数据并透传发送到串口