迪文屏c/c++ 触摸屏驱动程序
本项目是一个用于DWIN DGUS II系列触摸屏的C/C++驱动程序,通过RS232/RS485串口实现通信控制。主要功能包括串口通信配置、触摸屏变量读写、页面切换、系统参数获取和亮度控制等。支持多种波特率(9600-4000000bps)和通信模式(RS232/RS485),采用C/C++混合编程,依赖libserialport和pthread库,适用于Linux嵌入式系统。项目提供完整的AP
DWIN DGUS II 触摸屏驱动程序
项目地址:https://gitee.com/zynwh/dwin_232_485/tree/master
本项目是一个用于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/ # 文档目录
快速开始
编译项目
# 编译生成可执行文件
make
# 清理编译文件
make clean
串口配置
RS232模式配置(默认)
# 默认使用RS232模式,串口设备 /dev/ttyCH343USB0
./dw_touth_screen
# 或者指定其他串口设备
./dw_touth_screen /dev/ttyUSB0
RS485模式配置
# 使用RS485模式需要修改代码中的串口配置
# 在main.c中修改串口初始化参数:
# RS485模式配置示例:
sp_set_flowcontrol(port, SP_FLOWCONTROL_RTSCTS); # 启用硬件流控
# 或者根据具体硬件要求配置RS485方向控制引脚
串口参数配置
程序默认使用以下串口参数:
- 波特率: 115200 bps
- 数据位: 8位
- 停止位: 1位
- 校验位: 无校验
- 流控: 无流控(RS232)或硬件流控(RS485)
运行程序
# 程序会自动检测串口设备并建立通信
# 输出当前串口配置信息
./dw_touth_screen
主要功能演示
程序运行后会执行以下操作:
- 初始化串口通信 (115200, 8N1)
- 初始化DGUS协议栈
- 获取当前页面、亮度和系统配置
- 进入监控模式,实时检测页面变化
API接口说明
初始化接口
// 初始化DGUS库
dgus_init(串口数据可用回调, 串口接收回调, 串口发送回调, 数据包处理回调);
基本操作接口
// 获取当前页面
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电平
- 配置参数:
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
- 工作模式: 半双工通信
- 配置参数:
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(根据具体设备)
注意事项
-
串口权限: 确保运行用户有串口设备访问权限
sudo usermod -a -G dialout $USER # 添加用户到dialout组 -
设备路径: 默认使用
/dev/ttyCH343USB0,根据实际情况修改 -
字节序: 注意不同平台的字节序问题
-
超时处理: 通信失败时会自动重试,但需注意超时设置
-
RS485方向控制: 某些硬件需要手动控制发送/接收方向
-
终端电阻: RS485长距离通信时需要在总线两端加120Ω终端电阻
-
接地: 确保通信设备之间有良好的接地连接
作者和许可证
- 原作者: Barry Carter https://github.com/ginge/libdgus_ii
- 第二作者:JinXiu_w
- 项目基于开源许可证发布
- 欢迎提交Issue和Pull Request
故障排除
常见问题
RS232通信问题
-
无法打开串口设备
- 检查设备路径是否正确
- 确认用户有串口访问权限
- 检查设备是否被其他程序占用
-
数据传输错误
- 确认波特率设置匹配
- 检查数据位、停止位、校验位配置
- 验证连接线序是否正确
RS485通信问题
-
通信不稳定
- 检查终端电阻是否正确连接(120Ω)
- 确认A、B线连接正确
- 检查电缆长度是否超过规格
-
数据冲突
- 确认方向控制是否正常
- 检查是否有多个主机同时发送
- 验证网络拓扑结构
调试工具
使用串口调试工具验证连接:
# 安装串口调试工具
sudo apt-get install minicom cutecom
# 使用minicom测试
minicom -D /dev/ttyUSB0 -b 115200
# 使用cutecom图形界面
cutecom
技术支持
如遇到问题,请检查:
- 串口连接是否正确(RS232/RS485模式选择)
- 设备权限是否足够
- 波特率设置是否匹配
- 触摸屏是否正常工作
- 通信线路是否符合规范
可通过串口调试工具验证硬件连接状态,或使用示波器检查信号质量。
openvela 操作系统专为 AIoT 领域量身定制,以轻量化、标准兼容、安全性和高度可扩展性为核心特点。openvela 以其卓越的技术优势,已成为众多物联网设备和 AI 硬件的技术首选,涵盖了智能手表、运动手环、智能音箱、耳机、智能家居设备以及机器人等多个领域。
更多推荐



所有评论(0)