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

主要功能演示

程序运行后会执行以下操作:

  1. 初始化串口通信 (115200, 8N1)
  2. 初始化DGUS协议栈
  3. 获取当前页面、亮度和系统配置
  4. 进入监控模式,实时检测页面变化

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(根据具体设备)

注意事项

  1. 串口权限: 确保运行用户有串口设备访问权限

    sudo usermod -a -G dialout $USER  # 添加用户到dialout组
    
  2. 设备路径: 默认使用 /dev/ttyCH343USB0,根据实际情况修改

  3. 字节序: 注意不同平台的字节序问题

  4. 超时处理: 通信失败时会自动重试,但需注意超时设置

  5. RS485方向控制: 某些硬件需要手动控制发送/接收方向

  6. 终端电阻: RS485长距离通信时需要在总线两端加120Ω终端电阻

  7. 接地: 确保通信设备之间有良好的接地连接

作者和许可证

故障排除

常见问题

RS232通信问题
  1. 无法打开串口设备

    • 检查设备路径是否正确
    • 确认用户有串口访问权限
    • 检查设备是否被其他程序占用
  2. 数据传输错误

    • 确认波特率设置匹配
    • 检查数据位、停止位、校验位配置
    • 验证连接线序是否正确
RS485通信问题
  1. 通信不稳定

    • 检查终端电阻是否正确连接(120Ω)
    • 确认A、B线连接正确
    • 检查电缆长度是否超过规格
  2. 数据冲突

    • 确认方向控制是否正常
    • 检查是否有多个主机同时发送
    • 验证网络拓扑结构

调试工具

使用串口调试工具验证连接:

# 安装串口调试工具
sudo apt-get install minicom cutecom

# 使用minicom测试
minicom -D /dev/ttyUSB0 -b 115200

# 使用cutecom图形界面
cutecom

技术支持

如遇到问题,请检查:

  1. 串口连接是否正确(RS232/RS485模式选择)
  2. 设备权限是否足够
  3. 波特率设置是否匹配
  4. 触摸屏是否正常工作
  5. 通信线路是否符合规范

可通过串口调试工具验证硬件连接状态,或使用示波器检查信号质量。

Logo

openvela 操作系统专为 AIoT 领域量身定制,以轻量化、标准兼容、安全性和高度可扩展性为核心特点。openvela 以其卓越的技术优势,已成为众多物联网设备和 AI 硬件的技术首选,涵盖了智能手表、运动手环、智能音箱、耳机、智能家居设备以及机器人等多个领域。

更多推荐