40x40 矩阵控制系统

张开发
2026/4/16 20:40:04 15 分钟阅读

分享文章

40x40 矩阵控制系统
40x40 矩阵控制系统 - 技术文档1. 项目概述本系统是一个用于控制40x40音视频矩阵的桌面应用程序通过以太网TCP/IP与矩阵设备通信实现灵活的路由切换和预设管理功能。1.1 技术栈组件技术编程语言Python 3.12GUI框架tkinter (Python标准库)数据库SQLite通信协议TCP/IP Socket1.2 项目结构juzhen/ ├── config/ # 配置管理模块 │ └── __init__.py # 配置类 ├── core/ # 核心控制引擎 │ └── __init__.py # 矩阵控制器 ├── protocol/ # 通信抽象层 │ └── __init__.py # 协议适配器 ├── storage/ # 数据持久化层 │ └── __init__.py # 数据库操作 ├── ui/ # GUI界面 │ └── __init__.py # 主窗口类 ├── data/ # 数据目录 │ └── matrix.db # SQLite数据库 ├── config/ # 配置目录 │ └── settings.json # 配置文件 ├── main.py # 程序入口 └── requirements.txt # 依赖清单2. 功能模块2.1 配置管理 (config)Config类负责应用程序配置的加载、保存和访问。主要功能从JSON文件加载配置保存配置到JSON文件支持层级配置访问如protocol.switch_format默认配置{matrix_ip:192.168.1.100,matrix_port:23,connection_timeout:5,command_delay:0.05,retry_count:2,sync_interval:5,protocol:{switch_format:{in_}V{out}\r,query_output_format:Q{out}\r,query_all_format:ALLSTATUS\r,response_delimiter:\r}}2.2 通信协议 (protocol)ProtocolAdapter类负责与矩阵设备建立TCP连接并发送指令。主要功能TCP连接到矩阵设备发送切换指令发送查询指令支持指令重试机制核心方法# 连接矩阵connect(ip,port)-bool# 断开连接disconnect()# 发送指令send_command(command,wait_responseFalse,timeout2)-response# 生成切换指令generate_switch_command(input_id,output_id)-str# 生成查询指令generate_query_command(output_id)-str2.3 核心控制引擎 (core)MatrixController类实现核心的矩阵控制逻辑包括路由状态管理和预设部分调用。主要功能维护40x40路由状态缓存实现预设部分调用逻辑自动同步矩阵状态核心方法# 切换路由switch(input_id,output_id)-bool# 应用预设部分调用apply_preset(preset_id)-bool# 查询单个输出路由query_route(output_id)-input_id# 查询全部路由query_all_routes()# 保存当前路由到预设save_current_to_preset(preset_id)-dict部分调用算法defapply_preset(self,preset_id):mappingsself.database.load_preset(preset_id)foroutput_idinsorted(mappings.keys()):input_idmappings[output_id]# 检查当前是否已是此路由current_inputself.get_current_input(output_id)ifcurrent_input!input_id:# 发送切换指令self.switch(input_id,output_id)# 未在预设中出现的输出端口保持不变2.4 数据存储 (storage)Database类负责SQLite数据库操作存储预设和端口标签。主要功能预设的增删改查输入/输出端口标签管理配置导入/导出数据库表结构-- 预设表CREATETABLEpresets(idINTEGERPRIMARYKEY,nameTEXTNOTNULL,mappingsTEXTNOTNULL,-- JSON格式: {1: 2, 3: 4}created_timeTEXTNOTNULL,updated_timeTEXTNOTNULL);-- 输入标签表CREATETABLEinput_labels(input_idINTEGERPRIMARYKEY,labelTEXTNOTNULL);-- 输出标签表CREATETABLEoutput_labels(output_idINTEGERPRIMARYKEY,labelTEXTNOTNULL);2.5 用户界面 (ui)MainWindow类使用tkinter实现完整的图形界面。界面布局------------------------------------------------------------------- | [连接矩阵] IP:192.168.1.100 端口:23 状态:已连接 [刷新状态] | ------------------------------------------------------------------- | 预设方案: | | [方案1] [方案2] [方案3] [方案4] [方案5] [保存当前] [查看预设] | | [方案6] [方案7] [方案8] [方案9] [方案10] | ------------------------------------------------------------------- | 手动切换: 输入: [摄像机1 ▼] → 输出: [投影机左 ▼] [切换] | ------------------------------------------------------------------- | 矩阵路由视图: | | ------------------------- ------------------------- | | | 输入端口 | | 输出端口 | | | | IN1 → OUT3 (投影机) | | OUT1 ← IN5 (摄像机2) | | | | IN2 → OUT4 | | OUT2 ← IN1 (摄像机1) | | | | ... | | ... | | | ------------------------- ------------------------- | | 提示: 点击端口可查看连接信息选择后进行切换 | ------------------------------------------------------------------- | 状态: 已连接到 192.168.1.100:23 | -------------------------------------------------------------------菜单功能文件 → 导出配置 / 导入配置 / 退出工具 → 编辑输入标签 / 编辑输出标签3. 通信协议3.1 默认指令格式操作指令格式示例切换{in}V{out}\r1V3\r(IN1→OUT3)查询单路Q{out}\rQ3\r(查询OUT3)查询全部ALLSTATUS\rALLSTATUS\r3.2 响应解析系统会自动解析矩阵返回的响应提取当前输入源编号。4. 使用说明4.1 运行程序python main.py4.2 连接矩阵在IP输入框中输入矩阵的IP地址在端口输入框中输入端口号默认23点击连接矩阵按钮连接成功后状态显示为已连接4.3 手动切换从输入下拉框选择输入源从输出下拉框选择目标输出点击切换按钮确认弹出的对话框4.4 预设管理调用预设点击方案按钮直接调用预设保存预设先设置好当前路由点击保存当前按钮输入方案编号查看预设点击查看预设按钮可查看所有预设详情4.5 端口标签点击菜单工具 → “编辑输入标签或编辑输出标签”为每个端口设置自定义名称点击确定保存4.6 配置导入/导出点击菜单文件 → “导出配置”选择保存路径JSON格式导入时选择JSON文件即可5. 典型使用场景场景部分调用验证初始状态 - 方案一 {1→3, 2→4} - 方案二 {1→4, 2→3} 操作步骤 1. 调用方案一 → 路由变为1-3, 2-4 2. 手动修改 5→8 → 路由1-3, 2-4, 5-8 3. 调用方案二 → 仅执行 1→4, 2→35-8 保持不变 最终路由1→4, 2→3, 5→8 ✅6. 配置说明6.1 协议配置如果矩阵设备的通信协议不同可以修改config/settings.json中的协议格式{protocol:{switch_format:{in_}V{out}\r,query_output_format:Q{out}\r,query_all_format:ALLSTATUS\r,response_delimiter:\r}}6.2 其他参数参数说明默认值connection_timeout连接超时秒5command_delay指令间隔秒0.05retry_count重试次数2sync_interval自动同步间隔秒57. 版本信息版本日期说明1.02025-03初始版本1.12025-04优化界面改为上下两表8. 注意事项确保矩阵设备与控制电脑网络互通确认矩阵设备的TCP端口已开放部分调用功能不会影响未在预设中定义的输出端口建议定期导出配置备份

更多文章