新增 readme
This commit is contained in:
parent
968b4108b9
commit
5c5a8f44e8
112
README.md
Normal file
112
README.md
Normal file
@ -0,0 +1,112 @@
|
||||
# 腾智微丝产线包装系统
|
||||
|
||||
## 项目架构分析
|
||||
|
||||
这是一个基于PySide6(Qt for Python)开发的腾智微丝产线包装系统,采用了典型的MVC(模型-视图-控制器)架构:
|
||||
|
||||
1. **模型层(Model)**:
|
||||
- 使用DAO(数据访问对象)模式访问数据库
|
||||
- 支持多种数据库(SQLite、PostgreSQL、MySQL)
|
||||
- 主要数据表包括用户表、检验配置表、检验数据表、电力消耗表等
|
||||
|
||||
2. **视图层(View)**:
|
||||
- 使用PySide6构建UI界面
|
||||
- 主要界面包括登录界面、主窗口、设置界面等
|
||||
- 采用分离的UI类设计,如LoginUI、MainWindowUI等
|
||||
|
||||
3. **控制器层(Controller)**:
|
||||
- 主要控制逻辑在widgets目录下的类中实现
|
||||
- 使用信号槽机制进行组件间通信
|
||||
- 采用单例模式管理全局资源
|
||||
|
||||
4. **工具层(Utils)**:
|
||||
- 提供各种工具类,如配置加载器、Modbus通信、串口管理等
|
||||
- 采用单例模式确保资源共享
|
||||
|
||||
## 技术栈
|
||||
|
||||
1. **前端技术**:
|
||||
- PySide6(Qt for Python)用于GUI开发
|
||||
- 使用Qt的信号槽机制实现组件间通信
|
||||
|
||||
2. **后端技术**:
|
||||
- Python作为主要开发语言
|
||||
- SQLite作为默认数据库,支持PostgreSQL和MySQL
|
||||
- Modbus协议用于与设备通信
|
||||
- 多线程处理耗时操作
|
||||
|
||||
3. **通信技术**:
|
||||
- Modbus TCP用于与PLC设备通信
|
||||
- 串口通信用于与称重设备、条码扫描器等外设通信
|
||||
|
||||
4. **设计模式**:
|
||||
- 单例模式(配置加载器、监控器等)
|
||||
- DAO模式(数据访问)
|
||||
- 观察者模式(信号槽)
|
||||
- 工厂模式(数据库连接)
|
||||
|
||||
## 代码结构
|
||||
|
||||
1. **主要目录**:
|
||||
- `widgets/`:包含所有窗口控制器类
|
||||
- `ui/`:包含所有UI定义类
|
||||
- `utils/`:包含工具类
|
||||
- `dao/`:包含数据访问对象
|
||||
- `db/`:包含数据库文件
|
||||
- `config/`:包含配置文件
|
||||
- `logs/`:包含日志文件
|
||||
|
||||
2. **核心文件**:
|
||||
- `main.py`:程序入口点
|
||||
- `widgets/login_widget.py`:登录窗口控制器
|
||||
- `widgets/main_window.py`:主窗口控制器
|
||||
- `utils/config_loader.py`:配置加载器
|
||||
- `utils/modbus_utils.py`:Modbus通信工具
|
||||
- `utils/sql_utils.py`:数据库工具
|
||||
|
||||
3. **应用流程**:
|
||||
- 程序启动后初始化日志系统
|
||||
- 加载配置文件
|
||||
- 显示登录窗口
|
||||
- 验证登录后显示主窗口
|
||||
- 主窗口中进行产线包装系统的操作
|
||||
|
||||
## 功能特点
|
||||
|
||||
1. **用户认证**:支持用户登录和权限控制
|
||||
2. **产线监控**:实时监控产线状态、电力消耗等
|
||||
3. **数据采集**:采集称重数据、检验数据等
|
||||
4. **报表生成**:生成各类统计报表
|
||||
5. **设备通信**:与PLC、称重设备等通信
|
||||
6. **多模式支持**:支持单机模式和接口模式
|
||||
|
||||
## 运行环境
|
||||
|
||||
- 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. 运行程序:
|
||||
```
|
||||
python main.py
|
||||
```
|
||||
|
||||
## 开发与扩展
|
||||
|
||||
系统采用模块化设计,可以方便地进行功能扩展:
|
||||
|
||||
1. 添加新的数据源:扩展`utils/sql_utils.py`
|
||||
2. 添加新的设备通信协议:参考`utils/modbus_utils.py`
|
||||
3. 添加新的UI界面:在`ui/`目录下创建新的UI类,在`widgets/`目录下创建对应的控制器类
|
||||
@ -24,9 +24,8 @@ from utils.register_handlers import (
|
||||
from utils.electricity_monitor import ElectricityHandler
|
||||
# 导入PySide6
|
||||
from PySide6.QtWidgets import (
|
||||
QWidget, QMessageBox, QTableWidgetItem, QStackedWidget, QLabel, QMainWindow,
|
||||
QTableWidget, QMenu, QComboBox, QFormLayout, QDialog, QVBoxLayout, QHBoxLayout, QPushButton,
|
||||
QStatusBar, QSplitter, QFrame, QHeaderView
|
||||
QWidget, QMessageBox, QTableWidgetItem, QStackedWidget, QLabel,
|
||||
QTableWidget, QMenu, QComboBox, QFormLayout, QDialog, QVBoxLayout,
|
||||
)
|
||||
from PySide6.QtCore import Qt, QTimer, Slot, Signal
|
||||
from PySide6.QtGui import QBrush, QColor
|
||||
@ -447,13 +446,9 @@ class MainWindow(MainWindowUI):
|
||||
modbus = ModbusUtils()
|
||||
client = modbus.get_client()
|
||||
try:
|
||||
# 上料 D2 寄存器写入 1, D0 寄存器写入拆垛层数
|
||||
# 上料 D0 给到层数,等待点击开始后,进行上料
|
||||
success0 = modbus.write_register_until_success(client, 0, self._current_stow_num)
|
||||
success2 = modbus.write_register_until_success(client, 2, 1)
|
||||
success3 = modbus.write_register_until_success(client, 3, 1)
|
||||
|
||||
# 上料 D2 寄存器写入 1, D0 寄存器写入拆垛层数
|
||||
if success0 and success2 and success3:
|
||||
if success0:
|
||||
# 创建状态标签并显示在右上角
|
||||
self.show_operation_status("拆垛层数", "input", str(self._current_stow_num))
|
||||
else:
|
||||
@ -1958,6 +1953,8 @@ class MainWindow(MainWindowUI):
|
||||
if status == 1:
|
||||
modbus = ModbusUtils()
|
||||
client = modbus.get_client()
|
||||
# 睡 0.5 秒,用于延缓modbus 监听
|
||||
time.sleep(0.5)
|
||||
modbus.write_register_until_success(client, 2, 0)
|
||||
modbus.close_client(client)
|
||||
|
||||
|
||||
Loading…
Reference in New Issue
Block a user