# dwin_232_485 **Repository Path**: zynwh/dwin_232_485 ## Basic Information - **Project Name**: dwin_232_485 - **Description**: 本项目是一个用于DWIN DGUS II系列触摸屏的C/C++驱动程序,通过RS232/RS485串口通信实现与触摸屏的交互控制。 - **Primary Language**: Unknown - **License**: MIT - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 2 - **Forks**: 0 - **Created**: 2025-12-12 - **Last Updated**: 2026-03-09 ## Categories & Tags **Categories**: Uncategorized **Tags**: Cpp ## README # DWIN DGUS II 触摸屏驱动程序 本项目是一个用于DWIN DGUS II系列触摸屏的C/C++驱动程序,通过RS232/RS485串口通信实现与触摸屏的交互控制。 ## 项目概述 该驱动程序提供了完整的DGUS II触摸屏通信解决方案,支持: - 串口通信配置与管理 - 触摸屏变量读写操作 - 页面切换与状态监控 - 系统配置参数获取 - 亮度控制与状态检测 ## 主要功能 ### 核心通信功能 - **RS232/RS485串口通信**: 支持多种串口通信模式 - RS232: 标准串口通信模式 - RS485: 半双工差分通信模式(需硬件支持) - **波特率配置**: 支持9600-4000000bps多种波特率 - **数据包处理**: 完整的数据包收发与解析机制 - **异步通信**: 支持非阻塞式数据接收处理 ### 触摸屏控制功能 - **页面管理**: 获取和设置当前显示页面 - **变量操作**: 读写触摸屏变量存储区 - **系统配置**: 获取触摸灵敏度、屏幕方向等参数 - **亮度控制**: 支持亮度调节和待机模式 ### 实时监控功能 - **页面变化检测**: 自动检测并响应页面切换事件 - **状态轮询**: 周期性获取触摸屏状态信息 - **数据接收处理**: 处理触摸屏发送的按键和数据 ## 技术架构 ### 开发环境 - **编程语言**: C/C++混合编程 - **编译工具**: GCC交叉编译器 (aarch64-linux-gnu-gcc) - **依赖库**: libserialport (串口通信), pthread (线程支持) - **目标平台**: Linux嵌入式系统 ### 文件结构 ``` dwin_touch_screen/ ├── main.c # 主程序入口和演示代码 ├── dgus.h / dgus.c # DGUS协议核心实现 ├── dgus_*.h / dgus_*.c # 功能模块实现 ├── simple_serial.h/.c # 串口通信封装 ├── rtos.h # 实时操作系统支持 ├── Makefile # 编译配置文件 └── doc/ # 文档目录 ``` ## 快速开始 ### 编译项目 ```bash # 编译生成可执行文件 make # 清理编译文件 make clean ``` ### 串口配置 #### RS232模式配置(默认) ```bash # 默认使用RS232模式,串口设备 /dev/ttyCH343USB0 ./dw_touth_screen # 或者指定其他串口设备 ./dw_touth_screen /dev/ttyUSB0 ``` #### RS485模式配置 ```bash # 使用RS485模式需要修改代码中的串口配置 # 在main.c中修改串口初始化参数: # RS485模式配置示例: sp_set_flowcontrol(port, SP_FLOWCONTROL_RTSCTS); # 启用硬件流控 # 或者根据具体硬件要求配置RS485方向控制引脚 ``` ### 串口参数配置 程序默认使用以下串口参数: - **波特率**: 115200 bps - **数据位**: 8位 - **停止位**: 1位 - **校验位**: 无校验 - **流控**: 无流控(RS232)或硬件流控(RS485) ### 运行程序 ```bash # 程序会自动检测串口设备并建立通信 # 输出当前串口配置信息 ./dw_touth_screen ``` ### 主要功能演示 程序运行后会执行以下操作: 1. 初始化串口通信 (115200, 8N1) 2. 初始化DGUS协议栈 3. 获取当前页面、亮度和系统配置 4. 进入监控模式,实时检测页面变化 ## API接口说明 ### 初始化接口 ```c // 初始化DGUS库 dgus_init(串口数据可用回调, 串口接收回调, 串口发送回调, 数据包处理回调); ``` ### 基本操作接口 ```c // 获取当前页面 dgus_get_page(&page_num); // 获取亮度 dgus_get_brightness(&brightness); // 获取系统配置 dgus_get_system_config(&config); // 读取变量 dgus_get_var(address, buffer, length); // 设置变量 dgus_set_var(address, data); ``` ## 典型应用场景 ### 工业控制面板 - 设备状态监控界面 - 参数配置界面 - 报警信息显示 ### 智能家居控制 - 家电控制面板 - 环境监测显示 - 场景模式切换 ### 机器人交互 - 机器人状态显示 - 任务参数设置 - 手动控制界面 ## 开发计划 ### 当前已实现 - ✅ 基本串口通信 - ✅ DGUS协议解析 - ✅ 页面管理功能 - ✅ 变量读写操作 - ✅ 系统配置获取 - ✅ 实时监控功能 ### 待开发功能 - 🔲 图形绘制功能 - 🔲 曲线显示控制 - 🔲 文本显示优化 - 🔲 音乐播放控制 - 🔲 更完善的错误处理 ## 串口配置指南 ### RS232模式 RS232是标准的串口通信模式,适用于短距离通信: - **通信距离**: 通常不超过15米 - **连接方式**: TX-RX, RX-TX, GND-GND - **电气特性**: ±12V电平 - **配置参数**: ```c sp_set_baudrate(port, 115200); sp_set_bits(port, 8); sp_set_stopbits(port, 1); sp_set_parity(port, SP_PARITY_NONE); sp_set_flowcontrol(port, SP_FLOWCONTROL_NONE); ``` ### RS485模式 RS485是差分通信模式,适用于工业环境: - **通信距离**: 可达1200米 - **连接方式**: A-A, B-B(差分信号) - **电气特性**: 差分电压±1.5V - **工作模式**: 半双工通信 - **配置参数**: ```c sp_set_baudrate(port, 115200); sp_set_bits(port, 8); sp_set_stopbits(port, 1); sp_set_parity(port, SP_PARITY_NONE); sp_set_flowcontrol(port, SP_FLOWCONTROL_RTSCTS); // 硬件流控 ``` ### 支持的波特率 系统支持以下波特率配置: - 标准波特率: 9600, 19200, 38400, 57600, 115200 - 高速波特率: 230400, 460800, 500000, 576000, 921600 - 超高速波特率: 1000000, 1152000, 1500000, 2000000, 2500000, 3000000, 3500000, 4000000 ### 串口设备选择 常见串口设备路径: - **USB转串口**: `/dev/ttyUSB0`, `/dev/ttyCH343USB0` - **板载串口**: `/dev/ttyS0`, `/dev/ttyS1` - **Arduino**: `/dev/ttyACM0` - **RS485转换器**: `/dev/ttyRS485`(根据具体设备) ## 注意事项 1. **串口权限**: 确保运行用户有串口设备访问权限 ```bash sudo usermod -a -G dialout $USER # 添加用户到dialout组 ``` 2. **设备路径**: 默认使用 `/dev/ttyCH343USB0`,根据实际情况修改 3. **字节序**: 注意不同平台的字节序问题 4. **超时处理**: 通信失败时会自动重试,但需注意超时设置 5. **RS485方向控制**: 某些硬件需要手动控制发送/接收方向 6. **终端电阻**: RS485长距离通信时需要在总线两端加120Ω终端电阻 7. **接地**: 确保通信设备之间有良好的接地连接 ## 作者和许可证 - 原作者: Barry Carter - 第二作者:JinXiu_w - 项目基于开源许可证发布 - 欢迎提交Issue和Pull Request ## 故障排除 ### 常见问题 #### RS232通信问题 1. **无法打开串口设备** - 检查设备路径是否正确 - 确认用户有串口访问权限 - 检查设备是否被其他程序占用 2. **数据传输错误** - 确认波特率设置匹配 - 检查数据位、停止位、校验位配置 - 验证连接线序是否正确 #### RS485通信问题 1. **通信不稳定** - 检查终端电阻是否正确连接(120Ω) - 确认A、B线连接正确 - 检查电缆长度是否超过规格 2. **数据冲突** - 确认方向控制是否正常 - 检查是否有多个主机同时发送 - 验证网络拓扑结构 ### 调试工具 使用串口调试工具验证连接: ```bash # 安装串口调试工具 sudo apt-get install minicom cutecom # 使用minicom测试 minicom -D /dev/ttyUSB0 -b 115200 # 使用cutecom图形界面 cutecom ``` ### 技术支持 如遇到问题,请检查: 1. 串口连接是否正确(RS232/RS485模式选择) 2. 设备权限是否足够 3. 波特率设置是否匹配 4. 触摸屏是否正常工作 5. 通信线路是否符合规范 可通过串口调试工具验证硬件连接状态,或使用示波器检查信号质量。