# BMS测试仪上位机 **Repository Path**: mahaining/bms-tester-upper-computer ## Basic Information - **Project Name**: BMS测试仪上位机 - **Description**: BMS测试仪上位机 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 2 - **Forks**: 2 - **Created**: 2025-06-10 - **Last Updated**: 2025-09-03 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # CAN 总线通信软件架构设计文档 ## 界面展示
### 登录界面 登录界面 ### 主通信界面 CAN通信界面 ### 参数设置界面

电压设置

电压设置界面

温度设置

温度设置界面
## 一、系统架构概述 本系统采用三层架构设计,将 CAN 总线通信软件分为 UI 组件层、控制器层和 CAN 工具层,各层通过明确接口交互,实现模块化与低耦合性,便于开发、维护和扩展。 ## 二、系统架构图 ![系统架构图](tool/exported_image.png) ## 三、各层详细设计 ### 3.1 UI 组件层 - can_form_ui.py UI 组件层提供用户交互界面,包含以下组件: #### 3.1.1 核心组件 - 设备类型下拉框 (cmbDeviceType):选择设备型号,提供设备类型信息 - 设备路数下拉框 (cmdDeviceIndex):选择设备索引(0/1),指定通信设备 - 波特率下拉框 (cmbBaudrate):选择通信速率,设置 CAN 总线波特率 - CAN 通道下拉框 (cmdDeviceIndex_2):选择通道(0/1),指定使用的 CAN 通道 - 连接按钮 (btnConnect):触发连接/断开操作,控制设备连接 - 数据显示表格 (lwDataDisplay):显示收发数据,直观展示通信内容 - 发送 ID 输入框 (txtSendId):输入帧 ID,指定发送数据的标识符 - 发送数据输入框 (txtSendData):输入发送数据内容 - 发送按钮 (btnSend):触发数据发送操作 ### 3.2 控制器层 - can_controller.py 控制器层协调 UI 与 CAN 工具层交互,包含核心方法和变量: #### 3.2.1 核心方法 - 初始化方法 (init):初始化 UI 和 CAN 工具,完成系统启动配置 - 连接处理方法 (on_connect_clicked):处理设备连接/断开逻辑 - 定时接收方法 (on_timer_receive):周期性从 CAN 总线读取数据 - 发送处理方法 (on_send_clicked):处理用户输入数据的发送逻辑 - 日志显示方法 (log_message):更新界面数据显示表格 #### 3.2.2 关键变量 - 状态变量 (connected):记录设备连接状态(已连接/未连接) - 计数变量 (tx_count/rx_count):统计数据发送/接收的数量 - 定时器 (receive_timer):定时触发数据接收操作 ### 3.3 CAN 工具层 - can_utils.py CAN 工具层封装底层硬件操作,提供统一接口: #### 3.3.1 核心方法 - 初始化方法 (init_device):初始化硬件设备和 CAN 通道 - 通道初始化 (_init_channel):配置 CAN 通道参数(波特率、滤波等) - 数据接收方法 (receive_frames):从 CAN 总线读取数据帧 - 发送数据方法 (send_frame):向 CAN 总线发送数据帧 #### 3.3.2 关键变量 - 设备句柄 (handle/ch_handle):存储硬件设备操作句柄 - 通道变量 (channel):记录当前使用的 CAN 通道(0 或 1) ### 3.4 电压控制模块 #### 3.4.1 UI组件层 - voltage_form_ui.py - 电压表格视图:显示64通道的电压设置和采集信息 - 工具栏按钮:全部加载、全部采集、停止全部、清除采集值、清除加载值 - 电压输入框:设置全局电压值 #### 3.4.2 控制器层 - voltage_controller.py 核心功能: - 处理表格按钮点击事件 - 管理电压加载和采集操作 - 处理CAN数据接收和更新 - 提供全局操作接口 #### 3.4.3 数据模型层 - voltage_model.py - 维护64通道的电压数据 - 提供数据更新接口 - 管理表格显示逻辑 ### 3.5 温度控制模块 #### 3.5.1 UI组件层 - temperature_form_ui.py - 温度表格视图:显示64通道的温度设置和采集信息 - 工具栏按钮:全部加载、全部采集、停止全部、清除采集值、清除加载值 - 温度输入框:设置全局温度值 #### 3.5.2 控制器层 - temperature_controller.py 核心功能: - 处理表格按钮点击事件 - 管理温度加载和采集操作 - 处理CAN数据接收和更新 - 提供全局操作接口 #### 3.5.3 数据模型层 - temperature_model.py - 维护64通道的温度数据 - 提供数据更新接口 - 管理表格显示逻辑 ### 3.6 通道编号规范 - 所有模块统一使用1-64的通道编号 - UI显示:CH1-CH64 - CAN通信:使用实际通道号1-64 ## 四、系统交互流程 ### 4.1 设备连接流程 - 用户通过 UI 选择设备类型、路数、波特率和通道; - 点击连接按钮,触发控制器层on_connect_clicked方法; - 方法调用 CAN 工具层init_device初始化设备; - init_device调用_init_channel完成通道配置。 ### 4.2 数据接收流程 - 定时器receive_timer触发,调用控制器层on_timer_receive; - 方法调用 CAN 工具层receive_frames读取数据; - 数据返回后,通过log_message更新lwDataDisplay表格。 ### 4.3 数据发送流程 - 用户在输入框中填写帧 ID 和数据; - 点击发送按钮,触发控制器层on_send_clicked; - 方法调用 CAN 工具层send_frame发送数据到总线。 ## 五、开发规范 ### 5.1 通道号处理规范 - UI层显示:始终使用CH1-CH64格式 - 数据存储:使用0-63作为数组索引 - 业务逻辑:使用1-64作为实际通道号 - CAN通信:发送和接收均使用1-64通道号 ### 5.2 代码风格规范 - 类名使用大驼峰命名 - 方法名使用小驼峰命名 - 变量名使用下划线命名 - 常量使用大写字母命名 - 添加必要的注释说明 [//]: # (程序打包) [//]: # (pyinstaller --clean bms.spec)