大彩串口屏开发——设置密码

前言       

        由于工作需要接触了大彩串口屏,过程中发现大彩论坛里没看到有设置密码的教程以及帖子,所以在解决此需求后记录一下学习过程。

目录

前言       

简介  

步骤

一、创建工程后新建三个画面

二、在工具中点击LUA脚本编程

三、验证 

附加

开发过程中遇到的bug


简介  

        设置密码部分主要是采用LUA脚本语言在屏内部进行编写,通过VisualTFT可视化软件编写工程后,里面会集成有LUA编程器可供编写脚本。

步骤
一、创建工程后新建三个画面

1、主页面

2、锁屏界面

3、修改密码界面

二、在工具中点击LUA脚本编程

        在该项目中用到的LUA脚本代码库是基于大彩官方提供的LUA  API库

1、初始化变量以及初始化函数和flash读写。

local byte_addr = 0x00000000  --flash存储起始地址
local old_password = 123456   -- 假设的初始密码 
local read_byte_data 

--初始化函数
function on_init()
	set_visiable(1,8,0)                     --初始化隐藏错误提示
	set_visiable(2,7,0)  

	--判断是否为第一次烧录,如果是就写入固定密码,如需恢复出厂设置,
	--此处需要配合单片机擦除flash
	if read_flash_string(byte_addr) ==nil then  
		flush_flash()
 		write_flash_string(byte_addr,old_password)		
	end	
	read_byte_data = read_flash_string(byte_addr)	

end

注意:此处由于可用的flash比较多,我便用写字符串的方式方便点,因为要储存六位字符串用作密码,至于写字节的方式本人试了一下没成功,可以浏览官方网站看看说明。https://doc.gz-dc.com/LUA/08_flash_api.html

2、点击锁屏界面中的输入密码文本框和修改密码界面中的确定按键会触发此回调函数。

--用户通过触摸修改控件后,执行此回调函数。
--点击按钮控件,修改文本控件、修改滑动条都会触发此事件。
function on_control_notify(screen,control,value)
	--触发锁屏界面
	if screen == 1 then      
		if control == 1 then
			read_byte_data = read_flash_string(byte_addr)
			old_password=read_byte_data
			if get_text(1,1) == old_password  then
				change_screen(0)	
			 	set_text(1,1,"")	
			else
				set_visiable(1,8,1)  
			end	
	 		set_text(1,1,"")	
		end
	else 
		set_visiable(1,8,0) 
	end
	--触发修改密码界面
	if screen == 2 then 
		if control == 5 and value == 1 then
			old_password=read_byte_data
			if get_text(2,3) == old_password then
				local new_password=get_text(2,4)
				old_password=new_password
	 			flush_flash()	
				write_flash_string(byte_addr,old_password)	
				change_screen(0)	 
			else
				set_visiable(2,7,1)
			end
		end
	else
		set_visiable(2,7,0)
	end

end

3、画面通知函数,在该项目主要用于在修改密码后将旧密码和新密码文本清除,以便下次进来时直接显示空白文本。

--当画面切换时,执行此回调函数,screen为目标画面。
function on_screen_change(screen)
	if screen == 0 or screen == 3 then
		set_text(2,3,"")	   --进入这两个页面就置密码文本为空
		set_text(2,4,"")
	end	
end
三、验证 

        本工程已经验证成功,假设的初始密码是123456,在修改为其它数字密码时会保存在flash里面,如需要清除flash需要手动清除,在lua脚本里面清nil,或者在单片机里面写NULL。

附加
开发过程中遇到的bug

1、需要把打印信息屏蔽掉,不然会导致,频繁快速点击按键后会让文本名称彻底消失。

2、VisualTFT软件在配置触摸屏时需要把坐标上传关掉,在系统设置里也一样要关掉,不然在单片机中设置蜂鸣器等系统设置按钮时会让其它一些命令接收不到,因为它先接收了坐标指令,没有接收到后面真正的命令。

3、若需要在单片机中设置蜂鸣器,需注意蜂鸣器位数写的数据出错,须对照指令表,官方给到的SDK有误,以下是正确写法。

4、字体编码格式默认是GBK的格式,但是上位机下发下来的场景名称是UTF-8格式,需要手动转到GBK,但是不能直接转,需要先把UTF-8转为Unicode格式,再把Unicode通过一个字表转为GBK,字表大小约为170K,加入到单片机flash中会导致升级功能失效,所以不能直接转为GBK,要从屏幕方面入手,将字号改为UTF-8输入,不要把所有的字号都改,如下所示。

 

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值