100 lines
3.0 KiB
Python
100 lines
3.0 KiB
Python
#!/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': 17, # UART TX
|
||
'rx': 16, # 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 02 01 48 65 6c 6c 6f
|
||
# (ED + 05(消息长度) + 0201(地址) + "Hello"(消息本体))
|
||
# 接收: ED 05 02 01 48 65 6c 6c 6f
|
||
'lora_mesh_mode': 'EC',
|
||
|
||
# 单包最大用户数据数据长度, 模块限制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': 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,
|
||
}
|