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': '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': 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,
 | 
						||
}
 |