jiateng_ws/README.md

186 lines
6.8 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 腾智微丝产线包装系统
## 项目架构分析
这是一个基于PySide6Qt for Python开发的腾智微丝产线包装系统采用了典型的MVC模型-视图-控制器)架构:
1. **模型层Model**
- 使用DAO数据访问对象模式访问数据库
- 支持多种数据库SQLite、PostgreSQL、MySQL
- 主要数据表包括用户表、检验配置表、检验数据表、电力消耗表等
2. **视图层View**
- 使用PySide6构建UI界面
- 主要界面包括登录界面、主窗口、设置界面等
- 采用分离的UI类设计如LoginUI、MainWindowUI等
3. **控制器层Controller**
- 主要控制逻辑在widgets目录下的类中实现
- 使用信号槽机制进行组件间通信
- 采用单例模式管理全局资源
4. **工具层Utils**
- 提供各种工具类如配置加载器、Modbus通信、串口管理等
- 采用单例模式确保资源共享
5. **硬件集成层**
- **相机子系统**基于海康威视SDK进行集成
- 相机管理器CameraManager单例模式管理相机生命周期
- 相机显示组件CameraDisplayWidget用于实时显示相机画面
- 相机设置控制器CameraSettingsWidget管理相机参数设置
- **串口通信**:与称重设备、扫描器等外设通信
- **Modbus通信**与PLC设备通信
## 技术栈
1. **前端技术**
- PySide6Qt for Python用于GUI开发
- 使用Qt的信号槽机制实现组件间通信
2. **后端技术**
- Python作为主要开发语言
- SQLite作为默认数据库支持PostgreSQL和MySQL
- Modbus协议用于与设备通信
- 多线程处理耗时操作
3. **通信技术**
- Modbus TCP用于与PLC设备通信
- 串口通信用于与称重设备、条码扫描器等外设通信
- 海康威视SDK用于相机图像采集和处理
4. **设计模式**
- 单例模式(配置加载器、监控器、相机管理器等)
- DAO模式数据访问
- 观察者模式(信号槽)
- 工厂模式(数据库连接)
## 代码结构
1. **主要目录**
- `widgets/`:包含所有窗口控制器类
- `ui/`包含所有UI定义类
- `utils/`:包含工具类
- `dao/`:包含数据访问对象
- `db/`:包含数据库文件
- `config/`:包含配置文件
- `logs/`:包含日志文件
- `camera/`包含相机模块和SDK接口类
2. **核心文件**
- `main.py`:程序入口点
- `widgets/login_widget.py`:登录窗口控制器
- `widgets/main_window.py`:主窗口控制器
- `widgets/camera_manager.py`:相机管理器
- `widgets/camera_display_widget.py`:相机显示组件
- `widgets/camera_settings_widget.py`:相机设置控制器
- `utils/config_loader.py`:配置加载器
- `utils/modbus_utils.py`Modbus通信工具
- `utils/sql_utils.py`:数据库工具
- `camera/CamOperation_class.py`:相机操作类
- `camera/MvCameraControl_class.py`海康威视相机控制SDK
- `utils/local_image_player.py`:本地图像序列播放器
3. **应用流程**
- 程序启动后初始化日志系统和配置
- 创建和初始化各子系统(数据库、电力监控器等)
- 显示登录窗口
- 验证登录后显示主窗口
- 主窗口中进行产线包装系统的操作,包括:
- 产品检测和包装
- 实时相机监控
- 数据采集和报表生成
- 设备状态监控和控制
## 相机子系统详解
1. **架构设计**
- 采用分层设计将相机SDK封装在底层提供简洁API供上层使用
- 相机管理采用单例模式,确保全局只有一个相机实例
- 使用信号槽机制实现相机状态与UI的松耦合通信
2. **核心组件**
- `CameraManager`:单例类,负责相机设备枚举、开关、参数设置等
- `CameraDisplayWidget`显示组件负责在UI中显示相机画面
- `CameraSettingsWidget`:设置控制器,负责参数调整界面交互
- `CamOperation_class`相机操作封装类直接与海康SDK交互
- `LocalImagePlayer`:本地图像序列播放器,提供基于本地图片序列的视频模拟功能
3. **工作流程**
- 系统启动时初始化相机SDK
- 用户界面显示时枚举并连接可用的相机设备
- 启动相机图像采集并在UI中显示
- 用户可通过设置界面调整相机参数(曝光、增益、帧率等)
- 系统关闭时正确释放相机资源
4. **配置管理**
- 相机参数保存在`config/app_config.json`的`camera`部分
- 包括默认曝光时间、增益、帧率等参数
- 用户调整的参数可保存至配置文件持久化
5. **本地图像模式**
- 支持本地图像序列播放,可用于模拟相机实时画面
- 用户可选择包含图像序列的文件夹,系统自动按时间顺序播放
- 可调整播放帧率、设置循环播放等参数
- 适用于开发测试和演示场景,无需连接实际相机设备
- 配置参数保存在`config/app_config.json`的`camera.local_mode`部分
## 功能特点
1. **用户认证**:支持用户登录和权限控制
2. **产线监控**:实时监控产线状态、电力消耗等
3. **数据采集**:采集称重数据、检验数据等
4. **相机集成**:支持实时图像采集、显示和参数调整
5. **报表生成**:生成各类统计报表
6. **设备通信**与PLC、称重设备等通信
7. **多模式支持**:支持单机模式和接口模式
## 运行环境
- Python 3.7+
- PySide6
- 支持的数据库SQLite、PostgreSQL、MySQL
- 操作系统Windows、macOS、Linux
## 安装与配置
1. 安装依赖:
```
pip install -r requirements.txt
```
2. 配置数据库:
- 默认使用SQLite数据库位于`db/jtDB.db`
- 可在`config/app_config.json`中配置其他数据库
3. 配置相机:
- 在`config/app_config.json`中的`camera`部分调整相机参数
- 默认参数:
```json
"camera": {
"enabled": false,
"default_exposure": 20000,
"default_gain": 10,
"default_framerate": 30,
"local_mode": {
"enabled": false,
"folder_path": "",
"framerate": 15,
"loop": true,
"file_patterns": [".jpg", ".jpeg", ".png", ".bmp"]
}
}
```
4. 运行程序:
```
python main.py
```
## 开发与扩展
系统采用模块化设计,可以方便地进行功能扩展:
1. 添加新的数据源:扩展`utils/sql_utils.py`
2. 添加新的设备通信协议:参考`utils/modbus_utils.py`
3. 添加新的UI界面在`ui/`目录下创建新的UI类在`widgets/`目录下创建对应的控制器类
4. 扩展相机功能:修改`widgets/camera_manager.py`和`camera/CamOperation_class.py`