# 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. 线程安全的数据发送机制