实现 RS485Manager

This commit is contained in:
2025-10-08 19:36:48 +08:00
parent fe1c307129
commit 46922e8505
9 changed files with 279 additions and 23 deletions

81
main/config/config.py Normal file
View File

@@ -0,0 +1,81 @@
#!/usr/bin/env python
# -*- coding: utf-8 -*-
"""
项目全局配置文件
集中管理所有硬件引脚、通信参数和软件配置,
便于统一修改和适配不同的硬件版本。
"""
# --- LoRa 模块配置 ---
# 假设LoRa模块使用独立的UART进行通信
LORA_CONFIG = {
# LoRa模块连接的UART总线ID (0, 1, or 2 on ESP32)
'uart_id': 2,
# LoRa模块的通信波特率
'baudrate': 9600,
# LoRa模块连接的GPIO引脚
'pins': {
'tx': 17, # UART TX
'rx': 16, # UART RX
}
}
# --- 总线配置 ---
# 使用字典来定义项目中的所有通信总线
# key是总线ID (bus_id)value是该总线的详细配置字典。
# 这种结构使得 command_processor 可以通过 bus_id 动态获取其配置。
BUS_CONFIG = {
# --- 总线 1 ---
1: {
# 总线协议类型,用于程序动态选择不同的处理逻辑
'protocol': 'RS485',
# 该总线使用的硬件UART ID
'uart_id': 1,
# 该总线的通信波特率
'baudrate': 9600,
# 该总线使用的GPIO引脚
'pins': {
'tx': 4, # RS485 TX
'rx': 5, # RS485 RX
'rts': 2, # RS485 DE/RE 方向控制引脚
}
},
# 如果未来有第二条总线,或不同协议的总线,可以直接在这里添加
# 2: {
# 'protocol': 'RS485',
# 'uart_id': 0,
# 'baudrate': 19200, # 这条总线可以有不同的波特率
# 'pins': {
# 'tx': 25,
# 'rx': 26,
# 'rts': 27,
# }
# },
}
# --- 全局超时设置 (毫秒) ---
DEFAULT_TIMEOUTS = {
'rs485_response': 500, # 等待RS485设备响应的默认超时时间
'lora_at_command': 300, # 等待LoRa模块AT指令响应的超时时间
}
# --- 系统参数配置 ---
SYSTEM_PARAMS = {
# 任务队列的最大长度。用于主线程和工作线程之间的缓冲。
# 如果LoRa指令瞬间并发量大可以适当调高此值。
# 如果内存紧张,可以适当调低。
'task_queue_max_size': 10,
# 全局调试日志开关
# True: 所有 logger.log() 的信息都会被打印到串口。
# False: logger.log() 将不执行任何操作,用于发布产品。
'debug_enabled': True,
}