#!/usr/bin/env python # -*- coding: utf-8 -*- """ 项目全局配置文件 集中管理所有硬件引脚、通信参数和软件配置, 便于统一修改和适配不同的硬件版本。 """ # --- LoRa 模块配置 --- # 假设LoRa模块使用独立的UART进行通信 LORA_CONFIG = { # 平台LoRa地址 'master_address': 0x01, # LoRa模块连接的UART总线ID (0, 1, or 2 on ESP32) 'uart_id': 2, # LoRa模块的通信波特率 'baudrate': 9600, # LoRa模块连接的GPIO引脚 'pins': { 'tx': 5, # UART TX 'rx': 4, # UART RX }, # LoRa Mesh 模块发送模式(EC: 透传; ED: 完整数据包) # e.g. # EC: 接收端只会接收到消息, 不会接收到请求头 # e.g. 发送: EC 05 02 01 48 65 6c 6c 6f # (EC + 05(消息长度) + 0201(地址) + "Hello"(消息本体)) # 接收: 48 65 6c 6c 6f ("Hello") # ED: 接收端会接收完整数据包,包含自定义协议头和地址信息。 # e.g. 发送: ED 05 12 34 01 00 01 02 03 # (ED(帧头) + 05(Length, 即 1(总包数)+1(当前包序号)+3(数据块)) + 12 34(目标地址) + 01(总包数) + 00(当前包序号) + 01 02 03(数据块)) # 接收: ED 05 12 34 01 00 01 02 03 56 78(56 78 是发送方地址,会自动拼接到消息末尾) 'lora_mesh_mode': 'ED', # 单包最大用户数据数据长度, 模块限制240, 去掉两位自定义包头, 还剩238 'max_chunk_size': 238 } # --- 总线配置 --- # 使用字典来定义项目中的所有通信总线 # 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': 16, # RS485 TX 'rx': 17, # RS485 RX 'rts': 15, # 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, }