——文档转载自电子发烧友
1.前言
本文介绍基于迪文屏和腾讯云搭建的在线文本聊天室。
2.硬件组成
(1)硬件介绍 触摸屏:迪文屏DMG85480F050_01WTC 联网:esp32 服务器:腾讯云linux服务器(http/websocket) 客户端:手机/平板/电脑
(2)使用介绍: 迪文屏+esp32作为客户端1,其中迪文屏用于录入文本,通过UART将文本信息传输给esp32。esp32接收到文本,且屏幕按下发送按钮,则向腾讯云服务器发送文本。客户端2可以是手机/平板/电脑,通过访问网页,建立与服务器的连接。 客户端2输入"connect=X",X为客户端号,则允许向客户端X发送消息。若A连接B,而B未连接A,则B可以收到A的消息,却不能向A发送消息。 客户端之间建立连接后可以进行文本对话,文本支持汉字。
3.框架图
(1)介绍下各模块的连接:
迪文屏与esp32通过uart连接: 发送:迪文屏通过gbk录入模块,自动上报数据给esp32,esp32存储当前的文本信息,待接收到了发送按键的上报事件,则向服务器发送文本内容。 接收:esp32接收到服务器返回的消息(包括事件,客户端,文本信息),通过uart写入迪文屏的变量地址0x1300,屏幕自动显示当前发送的文本/客户端发送的消息。
esp32和服务器通过websocket连接: 联网:esp32通过wIFi功能实现上网。 发送消息:esp32使用websocket访问到腾讯云服务器的端口3001,用于文本传输。
手机客户端与服务器通过http连接: 手机端访问服务器的端口80,打开网页。 网页会通过服务器端口3001注册websocket客户端。 服务器上允许websocket服务,用于收发客户端的消息。
4.迪文屏开发
使用DWIN DGUS导入背景图片,创建gbk录入、文本显示、基础按键。其中gbk录入结合键盘实现文本录入并自动上传到UART2。
5.遇到的问题
(1)编码转换:由于屏幕是gbk编码,而websocket服务器使用的是utf8编码,那就需要进行编码转换,不过这个功能放在服务器端就相对简单,客户端只需要上传的数据是二进制块,即可解决。 (2)websocket协议:esp32使用websocket需要自己编写报头以及数据帧,注意字符以及十六进制数之间的转换。 (3)浏览器搭建:需要再腾讯云上搭建浏览器服务端,端口为80,编写html文件以及对应的js脚本,用于手机客户端访问。
6.后续开发
目前文本聊天功能正常,打算后续再加上camera,添加视频聊天功能。
|