# Linux多终端GUI交互 **Repository Path**: hhdxc/linux-multi-gui ## Basic Information - **Project Name**: Linux多终端GUI交互 - **Description**: 基于LVGL的Linux嵌入式多终端GUI聊天多媒体终端项目 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 1 - **Forks**: 0 - **Created**: 2026-09-12 - **Last Updated**: 2026-09-14 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README ``` # LVGL嵌入式聊天多媒体终端 ## 项目简介 本项目基于 **LVGL图形库 + Linux多线程Socket网络编程**,运行在嵌入式Linux开发板的图形客户端程序。 实现登录UI、主页功能面板、Mplayer视频播放器控制、客服聊天(文本+文件传输)、2048小游戏。 通信架构:客户端通过TCP连接自定义服务端,采用**4字节包头处理TCP粘包**,使用环形消息队列实现网络子线程与LVGL UI线程解耦。 ### 主要功能清单 1. ✅ 登录界面:账号输入框、密码输入框、软键盘、登录页面跳转 2. ✅ 主界面:功能入口(2048小游戏 / 视频播放 / 退出登录)、联系客服按钮 3. ✅ Mplayer视频播放:启动播放、退出播放、快进5s、快退5s、暂停、音量加减 4. ✅ 客服聊天窗口 - 收发文本消息 - 系统消息提示 - 文件发送(最大952字节) - 弹出式聊天窗口、内置软键盘 5. ✅ 2048小游戏:4×4棋盘、触摸手势滑动、分数统计、游戏结束判定、重新开始/退出游戏 6. ✅ 网络层 - TCP客户端,自定义协议(4字节长度头解决TCP粘包) - 获取在线用户列表 - 线程安全环形消息队列,互斥锁保护共享资源 - 文件收发功能 ## 项目文件结构 ├── home_ui.c/h # 主页 UI、聊天窗口、视频控制逻辑 ├── mywork.c/h # 登录界面 UI 实现 ├── qq_net.c/h # 网络客户端、socket、消息环形队列、文件传输 ├── game_2048.c/h # 2048 小游戏算法 + LVGL 界面 ├── mplayer.c/h # mplayer 进程启动、fifo 管道控制播放器 ├── hei.TTF # 中文字体文件(不提交 git,本地部署) ├── bj2.jpg # 主页背景图(不提交 git,本地部署) ├── bj.png # 登录页背景图(不提交 git,本地部署) ├── README.md # 项目说明文档 └── .gitignore # git 忽略编译产物、临时文件 ## 环境依赖 - 硬件:嵌入式Linux开发板 - 软件依赖 1. LVGL图形库(lv_tiny_ttf字体解析) 2. mplayer播放器(fbdev2帧缓冲输出、alsa音频) 3. pthread多线程库 4. Linux系统API:socket、fork、mkfifo、信号处理等 ## 编译与部署 ### 1. 修改硬编码路径(重要) 代码内部保留Windows调试路径,部署开发板**必须修改**: 1. TTF字体 `hei.TTF` 修改为开发板字体绝对路径 2. 背景图片 `bj2.jpg`、`bj.png` 修改开发板实际路径 3. 视频文件路径 `/home/wjy/video1.mp4` 修改开发板视频路径 4. mplayer fifo管道路径 `/home/wjy/mplayer_fifo`,确保目录存在 5. 修改网络配置 `qq_net.h` #define SERVER_IP "192.168.31.22" #define SERVER_PORT 54321 ## 执行环境 ### 硬件环境 - 平台:嵌入式ARM Linux(RK3568)开发板 - 显示设备:LCD显示屏(Framebuffer帧缓冲设备) - 输入:触摸屏(支持触摸手势)"/dev/input/event6" ### 软件运行环境 - 操作系统:Linux(内核支持fbdev2帧缓冲、ALSA音频) - LVGL版本:LVGL 9.x - 播放器:mplayer(slave从机模式,fbdev2输出) - 编译器:arm‑linux‑gnueabihf‑gcc 交叉编译器 - 依赖库:pthread线程库 > ⚠️ 本项目**不能直接在Windows运行**,Windows上仅可做代码阅读、编辑调试;必须交叉编译放到ARM开发板执行。 ```