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

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

大彩串口屏WIFI/以太网应用-TCP Client 通讯

[复制链接]

105

主题

137

帖子

9792

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
9792
发表于 2020-12-7 10:18:52 | 显示全部楼层 |阅读模式
本帖最后由 卡米拉 于 2020-12-18 10:44 编辑

http://video.gz-dc.com/WIFI%2C%E4%BB%A5%E5%A4%AA%E7%BD%91%E5%BA%94%E7%94%A8%20-%20TCP%20Client%20%E9%80%9A%E8%AE%AF.MP4
串口屏运行演示视频

一、适用范围
本文档适合大彩W系列选配带WIFI或大彩EW系列带以太网接口的串口屏产品使用。


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

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

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


三、概述
本例程中,介绍屏幕作为客户端,通过WIFI或者以太网进行SCOKET通讯的过程。本文不在阐述LUA脚本如何连接WIFI,具体可以参考WIFI系列教程,《WIFI应用-网络配置.pdf》。


四、参考资料
1. 《LUA 脚本API V1.4》可通过以下链接下载物联型开发包获取:
http:/www.gz-dc.com/index.php?s=/List/index/cid/19.html
2. 《LUA基础学习》可通过以下链接下载物联型开发包获取:
http:/www.gz-dc.com/index.php?s=/List/index/cid/19.html
3. LUA脚本初学者可以通过下面链接进行学习。
http://www.runoob.com/lua/lua-arrays.html



五、教程实现
本文主要介绍屏幕作为客户端SCOKET通讯,将分以下2点进行说明:
1. 准备工程素材;
2. 配置串口屏工程;

5.1 准备工程素材 5.1.1 准备工程素材
在实现例程前需要作以下3个准备:
1. 硬件平台;
2. 软件平台;
3. UI素材;

该例程使用大彩物联型7寸串口屏DC80480EW070_1V01_CE4为验证开发平台。如图5-1所示;
图5-1 EW系列7寸串口屏

其他尺寸W型的串口屏均可借鉴此教程。

5.1.2 软件及工具
1. VisualTFT 上位机软件
使用大彩自主研发的上位机软件VisualTFT配置工程,登录http://www.gz-dc.com/下载。如图5-2所示;
图5-2  上位机软件

2. NetAssist 网络调试助手
本例程中,使用NetAssist 网络调试助手调试工具和屏幕通讯。在本例程压缩包已包含,也可以自行网上下载。如图5-3所示。
图5-3  网络调试助手
5.2 配置工程
本章节主要介绍以下4点:

(1) NetAssist配置

(2) 工程配置

(3) SCOKET 屏幕收

(4) SCOKET 屏幕发


5.2.1 NetAssist配置
本例程中使用NetAssist网络调试助手演示,配置如下:
1) 协议类型:TCP Server
2) 本地IP地址:根据用户网络为准
3) 本地端口号:本例程中默认是“8080”
4) 连接对象:根据用户网络为准
5) 打开:打开连接,如图5-4所示:
图5-4  NetAssist 配置
注意:NetAssist网络调试助手详细使用教程可在网上查找资料了解

5.2.2 工程配置
在工程属性中,配置网络以下属性:
1) 网络:网卡模式
2) SSID名称:cp(以太网接口可不填)
3) 连接密码:12345678(以太网接口可不填)
4) DHCP:启用
5) 网络服务:服务器
6) 服务端口:8080

属性配置如图5-5所示;
图5-5  WIFI配置
5.2.3 修改服务器IP、PORT
1. 画面配置
在画面ID5中,添加两个文本控件(控件ID7、控件ID13,可弹出键盘输入设置)和一个按钮控件(控件ID9),其中控件ID7显示“服务器IP”、控件ID13显示“端口”。控件ID9为按钮按下时获取当前屏幕配置的“服务器IP”和“端口”。如图5-6所示:
图5-6 画面配置

2. LUA脚本编辑
本例程中,获取和设置port、Server IP的代码如程序清单 1所示:

程序清单 1 修改服务器参数
  1. --用户通过触摸修改控件后,执行此回调函数。
  2. --点击按钮控件,修改文本控件、修改滑动条都会触发此事件。
  3. function on_control_notify(screen,control,value)

  4.     if screen == sc_wifiset
  5.     then
  6.         ......

  7.     elseif screen == sc_tcp
  8.     then
  9.         if control == 3
  10.         then
  11.             ......

  12.         elseif control == 7
  13.         then
  14.             --获取键盘输入的IP
  15.             server_ip = get_text(sc_tcp, 7)
  16.             local wificom = 0
  17.             local mode    = 1
  18.             --修改服务器IP
  19.             set_network_service_cfg(wificom, mode, server_port, server_ip)
  20.             --保存配置
  21.             save_network_cfg()

  22.         elseif control == 9 and value == 0
  23.         then
  24.             --获取服务器IP、端口
  25.             local wificom,mode,port,server_addr=get_network_service_cfg()
  26.             server_ip   = server_addr
  27.             server_port = port
  28.             --显示到相应文本
  29.             set_text(sc_tcp,  7, server_ip)
  30.             set_text(sc_tcp, 13, server_port)

  31.         elseif control == 13
  32.         then
  33.             local wificom = 0
  34.             local mode    = 1
  35.             --获取键盘输入的IP
  36.             server_port   = get_text(sc_tcp, 13)
  37.             --修改服务器端口号
  38.             set_network_service_cfg(wificom, mode, server_port, server_ip)
  39.             --保存配置
  40.             save_network_cfg()
  41.         end
  42.     end
  43. end
复制代码

核心API函数
1) set_network_service_cfg(wificom, mode, port, server_addr)
设置网络服务参数
  • wificom -默认为0,为1时启用透传模式(即无线串口屏)
  • mode -0禁用网络服务,1客户端模式,2服务器模式
  • port -服务端口,默认5050
  • server_addr -服务器地址,(屏作客户端时)

2) get_network_service_cfg()
    获取网络服务参数,返回4个参数,说明同上
    wificom, mode, port, server_addr = get_network_service_cfg()

基本思路:当按钮控件ID9按下的时候,触发触摸控件回调函数on_control_notify(),在调用get_network_service_cfg ()获取当前屏幕的网络服务配置,并显示在ID7、ID13的文本控件中。当对文本控件ID7、ID13输入时候,调用set_network_service_cfg()修改配置和保存save_network_cfg()即可。


5.2.4 SOCKET 屏幕收
1. 画面配置
在画面ID5中,添加1个文本控件(控件ID5),作为显示接收到的服务器数据,配置如图5-7所示:
图5-7 画面配置

2. LUA脚本编辑
本例程中,当屏幕接收到服务的数据以16进制的格式显示出来,代码如程序清单 2所示。

程序清单 2 SOCKET 屏幕收
  1. --当客户端SOCKET接收到数据时,系统自动回调此函数。
  2. --接收的字节数组packet,下标从0开始
  3. function on_client_recv_data(packet)
  4.     --用于显示接收服务器的数据
  5.     local client_rec = ‘’

  6.     for i= 0,#(packet) do
  7.         --拼接数据
  8.         client_rec = client_rec .." ".. string.format("%02X",packet[i])
  9.     end
  10.     --显示数据
  11.     set_text(sc_tcp,5,client_rec)

  12.     --返回1时候,数据不会通过串口发送至用户主板
  13.     return 1
  14. end
复制代码

核心API函数
1) on_client_recv_data(packet)
    当客户端SOCKET接收到数据时,系统自动回调此函数。

  • packet:接收的字节数组packet,下标从0开始


基本思路:当服务器向屏幕发送数据时,屏幕自动回调on_client_recv_data()。本例程中,对接收服务器的数据仅作显示。实际应用中,用户可根据服务器的数据响应不同的动作,如更新文本、设置按钮、进度条、通过串口给MCU动作等等。


5.2.5 SOCKET 屏幕发
1. 画面配置
在画面ID5中,添加1个文本控件(控件ID3),当用户点击文本控件弹出键盘,并将输入的数据发送至服务器,画面配置如图5-8所示:
图5-8 画面配置

2. LUA脚本编辑
本例程中,当获取用户键盘输入值后,以16进制发送到服务器,代码如程序清单 3所示。

程序清单 3 SOCKET 屏幕发
  1. --自定义函数,填充缓冲区并发送
  2. function my_sendToserver(sendData)

  3.     --发送缓冲区
  4.     local send_buff = {}
  5.     --计算字符串函数
  6.     local send_len  = string.len(sendData)

  7.     for i = 1, send_len
  8.     do
  9.         --将字符转换成16进制
  10.         send_buff[i - 1] = tonumber(string.byte(sendData, i, i))
  11.     end
  12.     --发送服务器
  13.     client_send_data(send_buff)
  14. end
  15. --用户通过触摸修改控件后,执行此回调函数。
  16. --点击按钮控件,修改文本控件、修改滑动条都会触发此事件。
  17. function on_control_notify(screen,control,value)

  18.     if screen == sc_wifiset
  19.     then
  20.         ......

  21.     elseif screen == sc_tcp
  22.     then
  23.         if control == 3
  24.         then
  25.             --获取键盘输入的数据
  26.             local sendData = get_text(sc_tcp, 3)
  27.             my_sendToserver(sendData)

  28.         elseif control == 7
  29.         then
  30.             ......

  31.         elseif control == 9 and value == 0
  32.         then
  33.             ......

  34.         elseif control == 13
  35.         then
  36.             ......
  37.         end
  38.     end
  39. end
复制代码

核心API函数
1) client_send_data(packet)
    通过客户端SOCKET发送报文到服务器
  • packet:发送字节数组packet,下标从0开始。


5.3 下载工程
在我司的上层软件Visual TFT中集成了LUA程序的编译器,可以实现在编译工程的同时将LUA脚本程序一起编译,并且将编译后的图片和程序集合在一个名为DCIOT.PKG的文件中。编译后只需要把DCIOT.PKG文件拷贝到U盘中,插入串口屏并重新上电即可将图片和程序下载到屏中。


欢迎联系我司销售咨询



本帖子中包含更多资源

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

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

使用道具 举报

0

主题

1

帖子

14

积分

新手上路

Rank: 1

积分
14
发表于 2020-12-17 09:50:13 | 显示全部楼层
支持MQTT吗?还是要自行开发?
回复

使用道具 举报

0

主题

207

帖子

6881

积分

论坛元老

Rank: 8Rank: 8

积分
6881
发表于 2020-12-18 08:34:19 | 显示全部楼层
清茶 发表于 2020-12-17 09:50
支持MQTT吗?还是要自行开发?

目前不支持,需要自行开发
VisualHMI 人机界面 & VisualTFT 串口屏
回复

使用道具 举报

24

主题

44

帖子

206

积分

中级会员

Rank: 3Rank: 3

积分
206
发表于 2021-8-18 19:44:49 | 显示全部楼层
这个例程在哪下载?
回复

使用道具 举报

1

主题

2

帖子

111

积分

注册会员

Rank: 2

积分
111
发表于 2021-10-12 00:11:14 | 显示全部楼层
希望增加断开TCP连接的API,连接另一个服务端,通过保存网络配置来实现,等待wifi连接的时间太久了,希望能增加一下,谢谢!
回复

使用道具 举报

10

主题

36

帖子

232

积分

中级会员

Rank: 3Rank: 3

积分
232
发表于 2023-8-11 10:15:44 | 显示全部楼层
您好,这个例程,我下载到DC10600KEW070触摸屏中,始终无法与服务器建立通讯。用的助手来模拟的服务器
回复

使用道具 举报

2

主题

1253

帖子

1万

积分

论坛元老

Rank: 8Rank: 8

积分
12623
发表于 2023-8-11 17:16:40 | 显示全部楼层
day929 发表于 2023-8-11 10:15
您好,这个例程,我下载到DC10600KEW070触摸屏中,始终无法与服务器建立通讯。用的助手来模拟的服务器 ...

看一下,工程里面设置的服务器IP和端口号是否正确,屏幕是否和服务器位于同一个局域网内
Easy doesn't enter into Grown-up life
成年人的生活里面没有“容易”二字
回复

使用道具 举报

10

主题

36

帖子

232

积分

中级会员

Rank: 3Rank: 3

积分
232
发表于 2023-8-11 17:22:57 | 显示全部楼层
If后要接end 发表于 2023-8-11 17:16
看一下,工程里面设置的服务器IP和端口号是否正确,屏幕是否和服务器位于同一个局域网内 ...

我用调试助手分别按这个设置,一个做客户端一个做服务器模拟,是可以的,把屏插上去后,还是没用,顺便问一下,大屏支持BACnet通讯吗
回复

使用道具 举报

2

主题

1253

帖子

1万

积分

论坛元老

Rank: 8Rank: 8

积分
12623
发表于 2023-8-11 18:01:52 | 显示全部楼层
day929 发表于 2023-8-11 17:22
我用调试助手分别按这个设置,一个做客户端一个做服务器模拟,是可以的,把屏插上去后,还是没用,顺便问 ...

不支持BACnet通信,可以获取一下屏幕的IP看看
Easy doesn't enter into Grown-up life
成年人的生活里面没有“容易”二字
回复

使用道具 举报

10

主题

36

帖子

232

积分

中级会员

Rank: 3Rank: 3

积分
232
发表于 2023-8-11 18:16:26 | 显示全部楼层
If后要接end 发表于 2023-8-11 18:01
不支持BACnet通信,可以获取一下屏幕的IP看看

这个是获取的地址

本帖子中包含更多资源

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

x
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-12-4 01:09 , Processed in 0.073187 second(s), 19 queries .

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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