# xtell_server 功能说明 ## 概述 xtell_server 是一个基于 Mongoose 库的嵌入式 Web 服务器,用于 IP-KVM (Keyboard-Video-Mouse over IP) 远程控制系统。 ## 主要功能 ### 1. Web 服务器功能 - 监听端口 82,提供 HTTP 服务 - 支持 WebSocket 连接和文件上传 - 使用 Mongoose 库处理 HTTP 请求 ### 2. 远程控制功能 - **鼠标控制**: 接收 WebSocket 鼠标指令,转换为串口协议数据 - 数据格式: `{0x57, 0xAB, 0x00, 0x04, 0x07, 0x02, ..., checksum}` - 通过 `/dev/ttyS5` 串口通信 (波特率 115200) - **键盘控制**: 接收 WebSocket 键盘指令,转换为串口协议数据 - 数据格式: `{0x57,0xAB,0x00,0x02,0x08,0x00, ..., checksum}` ### 3. 用户管理系统 - 用户名密码修改功能 - 认证信息存储在 `/mnt/user.txt` - 支持 MJPG-streamer 认证配置 - 默认配置检测和创建 ### 4. 网络配置管理 - IP 地址、子网掩码、网关、DNS 配置 - 配置文件存储在 `/etc/init.d/xnet.conf` - 支持网络配置动态更新 - 默认 IP: 192.168.6.100, 端口: 8700 ### 5. 系统控制功能 - **关机控制**: 通过 GPIO 35 控制系统关机 - **重启控制**: 通过 GPIO 34 控制系统重启 - 支持远程关机和重启操作 ### 6. 视频流管理 - 启动和管理 MJPG-streamer 服务 - 支持认证的视频流传输 (端口 8080) - 分辨率: 1920x1080 - 动态用户认证配置 ### 7. GPIO 按键处理 - GPIO 139 按键检测线程 - 按键触发时恢复默认网络配置 - 硬件重置功能 - 自动重启 MJPG-streamer 服务 ### 8. 文件上传功能 - 支持分块文件上传 - 上传端点: `/upload` - 上传路径: `/mnt/UDISK/gcode.nc` - 支持大文件分块传输 ## 技术架构 ### 核心依赖 - **Mongoose**: 嵌入式 Web 服务器框架 - **MJPG-streamer**: 视频流服务 - **Linux GPIO**: 硬件控制接口 - **串口通信**: `/dev/ttyS5` ### 配置文件 - `/mnt/user.txt`: 用户认证信息 - `/etc/init.d/xnet.conf`: 网络配置 - `/www/webcam`: Web 界面文件 ### GPIO 映射 - GPIO 34: 系统重启控制 - GPIO 35: 系统关机控制 - GPIO 139: 硬件重置按键 ## WebSocket 消息协议 ### 鼠标控制 ``` mouse,x1,y1,x2,y2,buttons,scroll ``` ### 键盘控制 ``` keyboard,key_code,modifier ``` ### 用户管理 ``` newuser,oldUser,oldPass,newUser,newPass ``` ### 网络配置 ``` newip,ip,mask,gw,dns1,dns2 ``` ### 系统控制 ``` control,shutdown|reboot ``` ## 运行流程 1. **初始化阶段**: - 读取用户配置 - 启动 MJPG-streamer - 配置 GPIO - 初始化串口 - 启动 GPIO 监控线程 2. **服务阶段**: - 监听 HTTP/WebSocket 连接 - 处理客户端指令 - 转发键鼠数据到串口 - 管理系统配置 3. **硬件重置**: - GPIO 139 按键触发 - 恢复默认网络配置 - 重启相关服务 ## 独立性 xtell_server 是一个完整的独立应用程序,不需要其他组件配合即可正常运行所有功能。