# dwin.py 函数文档
DWIN串口屏幕控制模块,实现人机交互界面的通信和控制。
## 常量定义
- STR_MAX_LEN: 字符串最大长度 (28)
## DWIN 类
### 初始化
python
def __init__(self, uart_id=1, tx_pin=10, rx_pin=9, baudrate=115200)
- 功能: 初始化DWIN显示屏UART通信
- 参数:
- uart_id: UART端口号 (默认ESP32的UART1)
- tx_pin: 发送引脚 (默认GPIO10)
- rx_pin: 接收引脚 (默认GPIO9)
- baudrate: 波特率 (默认115200)
- 初始化内容:
- UART通信
- 线程锁
- 接收缓冲区
- 回调函数注册
### 基础通信函数
#### _send_bytes(self, data)
- 功能: 发送字节数据到显示屏
- 参数: data (字节数据)
- 实现: 线程安全的数据发送
#### put_string(self, data, length)
- 功能: 发送字符串数据到显示屏
- 参数:
- data: 字符串或字节数据
- length: 发送长度
### 显示控制函数
#### jump_page(self, page_id)
python
def jump_page(self, page_id)
- 功能: 切换显示页面
- 参数: page_id (页面ID)
- 协议: 0x5A 0xA5 0x04 0x80 0x03 [page_high] [page_low]
#### write_const_string(self, String_ASCII, addr=0x160)
python
def write_const_string(self, String_ASCII, addr=0x160)
- 功能: 写入ASCII字符串到显示屏
- 参数:
- String_ASCII: ASCII字符串
- addr: 显示地址 (默认0x160)
- 特性:
- 自动补全/截断到STR_MAX_LEN长度
- 支持ASCII编码
### 寄存器操作函数
#### read_reg(self, reg_addr)
python
def read_reg(self, reg_addr)
- 功能: 读取寄存器值
- 参数: reg_addr (寄存器地址)
#### write_reg(self, reg_addr, value)
python
def write_reg(self, reg_addr, value)
- 功能: 写入寄存器值
- 参数:
- reg_addr: 寄存器地址
- value: 写入值
### 变量操作函数
#### write_var(self, addr, value)
python
def write_var(self, addr, value)
- 功能: 写入16位变量值
- 参数:
- addr: 变量地址
- value: 16位整数值
#### write_var_32(self, addr, value)
python
def write_var_32(self, addr, value)
- 功能: 写入32位变量值
- 参数:
- addr: 变量地址
- value: 32位整数值
#### read_var(self, addr, wordCnt)
python
def read_var(self, addr, wordCnt)
- 功能: 读取变量值
- 参数:
- addr: 变量地址
- wordCnt: 数据宽度(1-2字)
- 返回值: 读取的整数值
### 数据接收处理
#### receive_data(self)
python
def receive_data(self)
- 功能: 接收串口数据
- 返回值: 是否成功接收完整数据包
- 超时: 10ms
#### process_received_data(self)
python
def process_received_data(self)
- 功能: 处理接收到的数据
- 实现:
1. 接收数据
2. 解码命令
3. 执行对应处理
### 命令处理函数
#### proccess_decode_cmd(self)
python
def proccess_decode_cmd(self)
- 功能: 解码并处理接收到的命令
- 支持命令:
- 0x83: 按键消息
- 0x81: 系统消息
#### proccess_Key_cmd(self)
python
def proccess_Key_cmd(self)
- 功能: 处理按键命令
- 按键功能:
- 0x01: 开始测试
- 0x02: 停止测试
- 0x12: 采集背景
- 0x13: 采集样品
- 0xCC: 系统复位
### 回调函数管理
#### reg_callback(self, reg_addr, value)
python
def reg_callback(self, reg_addr, value)
- 功能: 注册回调函数
- 支持回调:
- _handle_start_test: 开始测试
- _handle_stop_test: 停止测试
- _write_eeprom: EEPROM写入
- _update_cfg_callback: 配置更新
### 系统功能
#### init_lcd(self, eeprom_data=None)
python
def init_lcd(self, eeprom_data=None)
- 功能: 初始化LCD显示
- 参数: eeprom_data (EEPROM数据读取函数)
#### run(self)
python
def run(self)
- 功能: 运行主循环
- 实现: 持续处理接收数据
## 使用示例
python
from dwin import DWIN
# 创建实例
dwin = DWIN(uart_id=1)
# 写入显示内容
dwin.write_const_string("Hello World!")
dwin.write_var(0x10, 250)
dwin.write_var_32(0x20, 100000)
# 注册回调
def start_test():
print("Test started")
dwin.reg_callback("_handle_start_test", start_test)
# 运行主循环
dwin.run()
## 注意事项
1. 字符串显示限制为28字符
2. 仅支持ASCII字符串显示
3. 数据发送有2ms延时保护
4. 数据接收有10ms超时机制
5. 变量读写支持16位和32位格式
6. 回调函数需要预先注册
7. 通信协议以0x5A 0xA5开头
8. 线程安全的数据发送机制