一、概述
本文主要阐述的是如何在串口屏中实现掉电保存的功能,即用户在对文本输入之后,设置了保存的操作之后,能够实现屏幕在掉电重新上电的情况下实现数据保存的功能,即重新上电还是显示上次输入的文本内容。本例子主要是通过lua脚本的读写flash的函数来实现的,实现该功能有两个方法:一是通过数组方式实现,二是通过字符串的方式实现,下面会一一介绍这两种方法。
二、适用范围
本文适用于广州大彩F系列、物联型等支持lua脚本的型号。其中,F系列的固件版本需达到349及以上,物联型的需要在590以上。
三、实现方法
3.1 读写flash数据——以数组方式
屏幕可供用户使用的flash空间为128KB,可用于存储配置参数。其中,flash地址大小为0-131071,对应的一个地址对应一个字节。相应的数组读取函数如图 31所示。
图 31以数组方式读写
3.1.1 界面配置
本例子的实现:用户在界面上设置文本控件的输入,输入完成可通过点击“保存”按钮来实现将数值保存起来,断电重新上电文本控件显示上次输入的值。本例子主要用到的是文本控件以及按钮控件,界面设置如图 32所示。
图 32数组方式界面编辑
本例子主要以一个字节的读写来做示范,对应的数值大于255的话,对应的需要对数据做高低位处理,然后按照高低位字节对应存入数组里面。文本控件的设置如图 33所示。
图 33小键盘输入
3.1.2 脚本编写
脚本实现的功能:用户在界面上设置文本控件的输入,输入完成可通过点击“保存”按钮来实现将数值保存起来,断电重新上电文本控件显示上次输入的值。脚本的实现的思路:通过在按钮控件的通知回调函数触发数据以数组方式写入到flash,由于是数组方式,所以获取数值使用get_value(screen,control)来获取。然后通过初始化函数,即屏幕重新启动的时候再将数据从flash读取回来显示。相应的脚本实现如图 34所示。
图 34以数组读写的脚本
3.2 读写flash数据——以字符串方式
相对于数组方式的读写来说,以字符串读写的方式会方便一点。具体表现为:字符串读取函数直接设定起始存储的地址,然后使用get_text(screen,control)将读取的字符串存进去就可以。然后读取flash,对应设定起始地址就可以将之前的字符串读取出来。相应的字符串读取函数如图 35所示。
图 35以字符串方式
注意:用户需要给对应的字符串估算一个最大需要的存储空间,因为字符串读写的话,是全部字符串从起始地址开始直接存储的,这也是避免不同的字符串存储的地址重叠导致读取有错或者不完整。
3.2.1 界面配置
界面的配置同样是需要文本控件和按钮控件,文本控件主要可以让用户输入相应的字符,包括数字、英文以及中文。然后点击“保存”按钮,对应的输入信息就会保存起来。相应的界面配置如图 36所示。
图 36字符串方式界面配置
以字符串方式存储的方式,文本控件可以对应输入字符,包括数字、英文以及中文,故文本控件的输入方式可设置成全键盘输入,对应的设置如图 37所示。
图 37全键盘输入
3.2.2 脚本编写
脚本实现的功能:用户可以在文本控件输入相应的字符,点击保存按钮之后,屏幕断电重新上电依然显示上次输入的字符。
脚本实现的思路:通过在按钮控件的通知回调函数将文本控件输入的字符以字符串方式写入到flash,然后通过初始化函数,即屏幕重新启动的时候再将字符串从flash读取回来显示。相应的脚本实现如图 38和图 39所示。
图 38初始化读取字符串
图 39触发字符串保存
4、总结
以上介绍的关于数组以及字符串读写flash的方法,对应都有其使用的范围。以数组方式保存的方法,是针对于用户输入的一些数据,仅限于对应数字的输入,这个可以应用于保存数字密码、版本号或者配置参数等数据。以字符串方式保存的方法,应用范围相对于数组保存的要广,对应可以保存字符,包括数字、英文和中文,这部分可以应用于保存参数名称、字符密码以及支持字符的数据。