# 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 总线通信软件分为 UI 组件层、控制器层和 CAN 工具层,各层通过明确接口交互,实现模块化与低耦合性,便于开发、维护和扩展。
## 二、系统架构图

## 三、各层详细设计
### 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)