广州大彩串口屏论坛_大彩开发者交流论坛

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 9111|回复: 8

大彩串口屏物联型- HTTP远程升级教程

[复制链接]

104

主题

136

帖子

9759

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
9759
发表于 2021-5-20 10:28:32 | 显示全部楼层 |阅读模式
本帖最后由 卡米拉 于 2021-5-20 10:30 编辑

演示视频

一、适用范围
本文档适合大彩物联型所有带WIFI的串口屏产品。

二、开发环境版本
1.VisualTFT软件版本:V3.0.0.1176及以上的版本。
版本查看:
a) 打开VisualTFT软件启动页面如图21软件版本,右上角会显示的软件版本号;
图2-1软件版本


b) 打开VisualTFT,在软件右下角可以查看软件版本图22软件版本,
最新版本可登录http://www.gz-dc.com/进行下载。

图2-2软件版本

2.   串口屏硬件版本:V3.0.911.0 及以上的版本。
版本查看:
a) 查看屏幕背面版本号贴纸;
b) VisualTFT与屏幕联机成功后,右下角显示的版本号。


三、HTTP功能介绍
我司物联型串口屏引入了物联网的概念,可以通过WIFI 远程更新串口屏工程和固件,本文主要介绍带WIFI功能的物联型串口屏用于HTTP协议远程升级工程、固件的教程。

3.1 WIFI模块概述
物联型串口屏WIFI模块使用的是台湾瑞昱Realtek  RTL8188EUS芯片,该芯片的特点:
1. 超低功耗,高线性输出功率,150M USB 接口无线网卡模块;
2. 符合IEEE802.11n标准,兼容IEEE802.11g、IEEE802.11b标准,提供USB2.0接口;
3. 支持最新的64/128位WEP数据加密;支持WPA-PSK/WPA2-PSK,WPA/WPA2 安全机制;
WIFI模块与服务器之间通讯采用TCP/IP协议,物联型串口屏还支持使用基于TCP/IP通信协议传递数据的FTP协议、HTTP协议。

3.2 注意事项
使用HTTP 远程升级需要注意以下5点:
1. 固件版本需要是3.0.911.0以上(包括3.0.911.0版本);
2. 工程属性配置时,必须给C区分配空间,而且需要比升级文件大,比如升级文件7M,C区分配空间至少8M以上,如图3-1所示;
3. HTTP 下载路径必须是"C:/DCIOT.PKG",否则下载成功后无法升级工程;
4. 升级文件必须小于35M否则下载的时候会导致屏幕重启;
5. 远程升级画面尽量简洁,不可以播放视频,音频等占内存的应用。
图3-1 分配空间


四、实现教程
本章节主要讲述通过LUA实现HTTP远程升级串口屏的工程或者固件。本文将分为以下是4个阶段讲述教程DEMO是如何实现的:
1. 工程准备;
2. 工程配置与功能;
3. LUA编写及调试;
4. 下载与运行。

4.1 工程准备
在实现教程DEMO前需要作以下三个准备:
1. 硬件平台;
2. UI素材;
3. LUA编辑器。

4.1.1 硬件平台
该例程使用大彩物联型7寸DC80480W070为验证开发平台。如图4-1所示。
图4-1 物联型7寸


4.1.2 素材准备
准备好相应的美工UI。如图4-2所示。
图4-2 素材准备



4.1.3 LUA编辑器
上位机VisualTFT内部已集成了LUA开发编译环境,点击菜单栏工具,选择LUA编辑器,如图4-3所示。
图4-3 打开LUA编辑器



LUA编辑器的开发环境,如图4-4所示。
图4-4 LUA编辑器界面


4.2 API函数说明
大彩科技针对LUA脚本提供了丰富的API接口函数,具体函数可以查阅文档《LUA脚本API V1.5》,如图4-5所示。
图4-5 API函数文档


本教程文档中所涉及到的部分的相关接口函数
1. 函数on_control_notify(screen,control,value)
注释:此函数可以在用户触摸修改控件后被回调。函数有三个参数:
screen表示画面ID
control表示控件的编号
value表示控件的值。

2. 函数on_timer(timer_id)
注释:此函数可以在定时器超时后被回调。函数有一个参数:
timer_id表示超时定时器ID

3. 函数start_timer(timer_id, timeout, countdown, repeat)
注释:此函数可以启动定时器。函数有四个参数:
timer_id表示定时器ID,0~31
timeout表示超时时间,单位毫秒
countdown表示计时的方向,0顺计时,1 倒计时
repeat表示重复次数,0 表示无限重复

4. 函数stop_timer(timer_id),timer_id表示定时器ID。

5. 函数set_value(screen,control,value)
注释:此函数可以设置控件数值。函数有三个参数:
screen表示画面ID
control表示控件的编号
value表示控件的值。

6. 函数scan_ap()
注释:扫描无线热点,返回热点数目ap_count = scan_ap()

7. 函数http_download (taskid,uri,savepath)
注释:下载文件
taskid:请求任务编号,任意设置
uri:资源路径  http://video.gz-dc.com/DCIOT.PKG
savepath:存放位置  "C:/DCIOT.PKG"

8. 函数on_http_download (taskid, status)
注释:下载响应
taskid:响应任务编号,与http_download匹配
status:下载状态:0下载失败,1下载成功但存储失败,2下载并存储成功
注:更多API函数请参考文档《物联型LUA脚本API_V1.0》和网站:www.runoob.com/lua


4.3 如何适用HTTP协议远程升级串口屏
在我司提供参考资料中有关于串口屏HTTP协议远程升级工程的示例工程,为了方便理解文档所提到的参数设置,在阅读文档的同时可以查看工程配置协助理解文档内容。实现WIFI远程升级串口屏需要完成以下四个步骤:
1. 搭建云端服务器;(如果已有云端服务器可以跳过该步骤)
2. 配置串口屏网络参数;
3. HTTP下载文件到C盘;
4. 控制屏幕复位,解压升级文件。

4.3.1 搭建云端服务器
服务器,也称伺服器,是提供计算服务的设备。服务器的构成包括处理器、硬盘、内存、系统总线等,和通用的计算机架构类似,但是由于需要提供高可靠的服务,因此在处理能力、稳定性、可靠性、安全性、可扩展性、可管理性等方面要求较高。
搭建服务器这一步比较复杂,如果没有服务器建议寻找专业的开发服务器团队进行开发,以节省开发项目的时间。另外,一般网页上的网站也支持HTTP协议,开发者可以考虑将升级文件上传到自己公司官网上,生成HTTP下载链接。

4.3.2 配置串口屏网络参数
此步骤为配置串口屏默认的网络参数,工程中配置串口屏网络参数;
1. 双击图4-6中【工程窗口】中的工程名字,右边的【属性窗口】会显示该工程的属性;
图4-6 工程属性


2. 找到属性窗口中的【网络设置】和【高级设置】,如图4-7和图4-8所示;
注:此步骤请参考《大彩串口屏WIFI使用教程_V1.1》,本文不再重复介绍。
图4-7 工程属性


图4-8 高级设置


4.3.3 扫描/选取WIFI
建议将我司的示例工程的中WIFI设置、扫描WIFI和网络配置这三个画面直接移植作为固定模板使用,只修改图片风格不改变控件编号顺序,如果画面ID改变,需要将LUA脚本对应的画面ID更改。示例工程WIFI设置画面如图4-9所示;
图4-9 WIFI设置画面



控件编号4,5设置为弹出键盘输入的文本框控件,可以手动输入WIFI的账号密码,点击“连接设备”后调用LUA的API函数get_text()获取WIFI名称和WIFI密码对应的文本框中内容再调用LUA脚本中的set_wifi_cfg()函数修改默认连接的WIFI设备,工程中LUA脚本程序:
程序清单 1
  1. --按下按钮会调用该函数,并把画面ID和控件ID,以及控件值传参进该函数
  2. function on_control_notify(screen,control,value)
  3.       ……
  4. if screen==1 and control==8   and value == 1            --按钮连接设备按下
  5.      then
  6.         ssid = get_text(1,4)               --获取文本框内容
  7.         psw = get_text(1,5)                                   
  8.         set_wifi_cfg(1,0,ssid,psw)        --连接WIFI,1网卡模式,0自动识别加密
  9.         save_network_cfg();                --保存设置
  10.         set_text(1,1,'连接中...')
  11.      end
  12.     ……
  13. end
复制代码

点击“选取网络”,切换到扫描WIFI的画面中,如图4-10所示;点击“扫描WIFI”后调用LUA脚本的API函数scan_ap()和get_ap_info()扫描可用的WIFI设备,并将扫描出来的WIFI名称显示在列表中,脚本程序如下:
图4-10 扫描WIFI

程序清单 2
  1. --扫描wifi与显示
  2. function scan_ap_fill_list( )
  3.     ap_cnt = scan_ap()                                          --扫描可用热点
  4.     for i=1,ap_cnt do
  5.       ssid,security,quality = get_ap_info(i-1)               --获取信息
  6.       set_text(2,i,ssid)                                          --在列表中显示id
  7.     end
  8.     for i=ap_cnt,10 do
  9.        set_text(2,i,"")                                           --清空后面的
  10.     end
  11. end
  12. --控制控件
  13. function on_control_notify(screen,control,value)
  14.      --点击扫描热点
  15.      if screen==1 and control==7 or
  16.         screen==2 and control==21
  17.       then
  18.         scan_ap_fill_list()
  19.       end
  20. ……
  21. end
复制代码

扫描出所有的WIFI设备名称后,选中其中一个设备名字后,返回到WIFI配置画面中时,会自动填写选中的WIFI设备的名称,输入WIFI密码后点击 “连接设备”接入该WIFI设备中。LUA程序如下:
程序清单 3
  1. --选取热点
  2. function on_control_notify(screen,control,value)
  3. ……
  4.      if screen==2 and control>=11 and control<=20 and value == 1
  5.      then
  6.         ssid = get_text(2,(control-10))                      --文本控件从1~10
  7.         set_text(1,4,ssid)                                     --显示选中的SSID名称
  8.      end
  9. ……
  10. end
复制代码

4.3.4 远程更新
调用LUA 脚本下载PKG包,API函数参考上文4.2说明,工程画面配置如所示;
图4-11 画面配置


程序逻辑:点击远程更新按钮,调用http_download()函数将文件下载到c区,下载完成后触发回调函数on_http_download(),在回调函数中判断文件下载是否成功,成功后调用os.exit()复位串口屏
程序清单 4
  1. function on_control_notify(screen,control,value)
  2.     ……
  3.     if screen==4 and control==1                                            --远程升级
  4.       then
  5.         http_download(1,'http://video.gz-dc.com/DCIOT.PKG',c_dir)
  6.       end
  7.      …….
  8. end
  9. function on_http_download (taskid, status)
  10.     if taskid == 1 then
  11.         if status == 0 then                --下载失败
  12.             set_value(4,3,2)
  13.         elseif status == 1 then      --下载成功,存储失败
  14.             set_value(4,3,3)
  15.         elseif status == 2 then      --下载成功,存储成功
  16.             set_value(4,3,4)
  17.             os.exit()             --重启
  18.         end
  19.     end
  20. end
复制代码

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
销售与技术支持:(020)82186683-601
回复

使用道具 举报

31

主题

72

帖子

665

积分

高级会员

Rank: 4

积分
665
发表于 2021-6-20 21:44:52 | 显示全部楼层
能把工程包发出来吗?自个研究一下!这个研究快一年了!都没有整明白!
回复

使用道具 举报

2

主题

8

帖子

66

积分

注册会员

Rank: 2

积分
66
发表于 2023-6-9 11:09:15 | 显示全部楼层
下载有时间限制的吧,网络小于100K下载失败?跟工程师反映很久了,找不到问题?只能到这里发帖求助?
回复

使用道具 举报

2

主题

1253

帖子

1万

积分

论坛元老

Rank: 8Rank: 8

积分
12619
发表于 2023-6-9 11:51:53 | 显示全部楼层
jackliuwenli 发表于 2023-6-9 11:09
下载有时间限制的吧,网络小于100K下载失败?跟工程师反映很久了,找不到问题?只能到这里发帖求助? ...

有时间限制,初始化函数里面加一个http_set_timeout(15, 300),第一个参数是http请求的超时时间,第二个参数是http下载的超时时间,单位都是秒。虚拟屏不支持这个api。
Easy doesn't enter into Grown-up life
成年人的生活里面没有“容易”二字
回复

使用道具 举报

2

主题

8

帖子

66

积分

注册会员

Rank: 2

积分
66
发表于 2023-6-9 13:28:14 | 显示全部楼层
If后要接end 发表于 2023-6-9 11:51
有时间限制,初始化函数里面加一个http_set_timeout(15, 300),第一个参数是http请求的超时时间,第二个 ...

API跟内核版本有关系吗?经多次测试,无效啊
回复

使用道具 举报

2

主题

1253

帖子

1万

积分

论坛元老

Rank: 8Rank: 8

积分
12619
发表于 2023-6-9 13:35:26 | 显示全部楼层
jackliuwenli 发表于 2023-6-9 13:28
API跟内核版本有关系吗?经多次测试,无效啊

找业务拿最新的固件看看
Easy doesn't enter into Grown-up life
成年人的生活里面没有“容易”二字
回复

使用道具 举报

2

主题

8

帖子

66

积分

注册会员

Rank: 2

积分
66
发表于 2023-6-9 14:50:00 | 显示全部楼层
If后要接end 发表于 2023-6-9 13:35
找业务拿最新的固件看看

换了内核,搞定了,感谢陈工
回复

使用道具 举报

0

主题

1

帖子

10

积分

新手上路

Rank: 1

积分
10
发表于 2024-9-26 11:33:02 | 显示全部楼层
我想通过串口屏升级单片机,现在不知道那个c区的地址,想通过这个地址,把单片机的安装包放到这个地址,然后通过指令去读flash,发给单片机,现在是这个强制分区的C区地址是怎么计算的呢
回复

使用道具 举报

0

主题

388

帖子

1120

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1120
发表于 2024-9-26 17:17:42 | 显示全部楼层
物联型的屏,1Gbit的flash的ABC分区一起是110MByte,自行分配,128Mbit的flash是13MByte,自行分配
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|小黑屋|广州大彩串口屏论坛_大彩开发者交流论坛

GMT+8, 2024-11-21 18:37 , Processed in 0.059809 second(s), 19 queries .

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表