重构onPreviewScene之前的暂存

This commit is contained in:
2026-07-23 16:21:44 +08:00
parent 2a8b21c99c
commit e24af1e4df
3 changed files with 58 additions and 69 deletions
Binary file not shown.
+57 -68
View File
@@ -1,10 +1,10 @@
# QtUI 喷码机项目架构说明文档 # QtUI 韩国 喷码机项目架构说明文档
> **版本**: V6.7.4 > **版本**: V6.7.5
> **目标平台**: ARM Linux (全志H618) / x86 (模拟调试) > **目标平台**: ARM Linux (全志H618) / x86 (模拟调试)
> **Qt 版本**: Qt 5.x (ARM) / Qt 5.x (x86) > **Qt 版本**: Qt 5.x (ARM) / Qt 5.x (x86)
> **屏幕分辨率**: 800x600 > **屏幕分辨率**: 800x600
> **文档编写日期**: 2026-07-23 > **文档最后更新日期**: 2026-07-23
--- ---
@@ -20,7 +20,7 @@
8. [RFID刷卡模块](#8-rfid刷卡模块) 8. [RFID刷卡模块](#8-rfid刷卡模块)
9. [编译构建系统](#9-编译构建系统) 9. [编译构建系统](#9-编译构建系统)
10. [关键配置与宏定义](#10-关键配置与宏定义) 10. [关键配置与宏定义](#10-关键配置与宏定义)
11. [新同事上手指南](#11-新同事上手指南) 11. [上手指南](#11-上手指南)
--- ---
@@ -47,7 +47,7 @@
| 语言 | C++ (C++11),部分C | | 语言 | C++ (C++11),部分C |
| 构建工具 | qmake | | 构建工具 | qmake |
| UI设计 | Qt Designer (.ui文件) | | UI设计 | Qt Designer (.ui文件) |
| 序列化 | XML (作业文件)、INI (配置文件) | | 序列化 | XML (作业文件) |
| 通信 | QSerialPort (RS232/RS485) | | 通信 | QSerialPort (RS232/RS485) |
| 网络 | Qt Network (WiFi) | | 网络 | Qt Network (WiFi) |
| 条码生成 | C语言库 (BarCode目录) | | 条码生成 | C语言库 (BarCode目录) |
@@ -74,7 +74,6 @@
│ SysPara (系统参数管理) │ │ SysPara (系统参数管理) │
│ DevOp (设备操作) │ │ DevOp (设备操作) │
│ RunTimeCtrl (运行时间统计) │ │ RunTimeCtrl (运行时间统计) │
│ LogInfoCtrl (日志控制) │
│ RFIDManager (刷卡管理) │ │ RFIDManager (刷卡管理) │
├─────────────────────────────────────────────────────────┤ ├─────────────────────────────────────────────────────────┤
│ 通信层 │ │ 通信层 │
@@ -82,7 +81,7 @@
│ Modbus (Modbus协议) │ │ Modbus (Modbus协议) │
├─────────────────────────────────────────────────────────┤ ├─────────────────────────────────────────────────────────┤
│ 硬件抽象层 │ │ 硬件抽象层 │
│ FPGA (喷印控制、高压、相位检测) │ │ FPGA (喷印控制、充电电压、相位检测) │
│ STM32 (墨路控制、传感器采集) │ │ STM32 (墨路控制、传感器采集) │
│ RFID读卡器 (IC卡读写) │ │ RFID读卡器 (IC卡读写) │
└─────────────────────────────────────────────────────────┘ └─────────────────────────────────────────────────────────┘
@@ -98,24 +97,21 @@ InkJetPrinter (顶层窗口)
│ ├── PrintTextDisplay (打印预览) │ ├── PrintTextDisplay (打印预览)
| └── 其他 | └── 其他
├── TestPrintWidget (编辑界面) ├── TestPrintWidget (编辑界面)
│ ├── PicScene (场景编辑) │ ├── PicScene (场景内容容器)
│ ├── ItemEditor (图元编辑) │ ├── ItemEditor (文本图元编辑)
│ ├── ImageLoader (图片加载) │ ├── ImageLoader (图片图元加载)
│ ├── BarcodeEditor (条码编辑) │ ├── BarcodeEditor (条码图元编辑)
│ └── CounterVarSet (计数器设置) | ├── DateVarSet (日期变量设置)
│ ├── CounterVarSet (计数器图元设置)
| └── ScheduleShiftsEditor (班次编辑)
├── SystemManage (系统管理) ├── SystemManage (系统管理)
├── SystemSetting (系统设置) ├── SystemSetting (系统设置)
├── SystemUpdate (系统升级) ├── SystemUpdate (系统升级)
├── FontSetWidget (字体设置)
├── PrintSetting (打印设置) ├── PrintSetting (打印设置)
├── MainInstruction (主指令) ├── MainInstruction (主指令)
├── LogInfo (日志信息) ├── LogInfo (日志信息)
├── OtherInfo (其他信息) ├── OtherInfo (其他信息)
├── DateVarSet (日期变量设置) └── DialogFileOperation (打印文件选择操作)
├── CounterVarSet (计数器变量设置)
├── QBarCode / dlgQrCode (条码/二维码对话框)
├── DialogFileOperation (文件操作)
└── ScheduleShiftsEditor (班次编辑)
SysPara (系统参数,贯穿所有模块) SysPara (系统参数,贯穿所有模块)
Serial (串口通信,连接FPGA和STM32) Serial (串口通信,连接FPGA和STM32)
@@ -160,8 +156,7 @@ RunTimeCtrl (运行时间控制)
│ ├── DateReplaceEditor.* # 日期替换编辑器 │ ├── DateReplaceEditor.* # 日期替换编辑器
│ ├── ScheduleShiftsEditor.* # 班次编辑器 │ ├── ScheduleShiftsEditor.* # 班次编辑器
│ ├── DlgBarcodeFormat.* # 条码格式对话框 │ ├── DlgBarcodeFormat.* # 条码格式对话框
│ ├── DlgQrcodeFormat.* # 二维码格式对话框 │ └── DlgQrcodeFormat.* # 二维码格式对话框
│ └── sceneviewwidget.* # 场景视图封装
│ │
├── rfid/ # RFID刷卡模块 ├── rfid/ # RFID刷卡模块
│ ├── rfidmanager.h/cpp # 刷卡管理核心 │ ├── rfidmanager.h/cpp # 刷卡管理核心
@@ -201,12 +196,10 @@ RunTimeCtrl (运行时间控制)
│ ├── dm200.cpp # DataMatrix实现 │ ├── dm200.cpp # DataMatrix实现
│ └── ... │ └── ...
│ │
├── qjson/ # JSON解析库
│
├── image.qrc # Qt资源文件 ├── image.qrc # Qt资源文件
├── *.ts # 多语言翻译文件 ├── *.ts # 多语言翻译文件
│ │
├── 0/ ~ 101/ # 字库图片资源 (数字位图) ├── 0/ ~ 101/ # 字库图片资源 (计数器图元 数字占位图)
│ └── image/ │ └── image/
│ └── digitalWidth*.bmp │ └── digitalWidth*.bmp
│ │
@@ -222,7 +215,7 @@ RunTimeCtrl (运行时间控制)
### 5.1 程序入口 (main.cpp) ### 5.1 程序入口 (main.cpp)
[main.cpp](file:///mnt/hgfs/share/bSpec/800X600_New_SystemProject-_NewInterface/main.cpp) [main.cpp](../main.cpp#L67)
程序启动流程: 程序启动流程:
1. 读取键盘类型配置(多语言键盘/普通键盘) 1. 读取键盘类型配置(多语言键盘/普通键盘)
@@ -234,7 +227,7 @@ RunTimeCtrl (运行时间控制)
### 5.2 主窗口 (InkJetPrinter) ### 5.2 主窗口 (InkJetPrinter)
[InkJetPrinter.h](file:///mnt/hgfs/share/bSpec/800X600_New_SystemProject-_NewInterface/InkJetPrinter.h) | [InkJetPrinter.cpp](file:///mnt/hgfs/share/bSpec/800X600_New_SystemProject-_NewInterface/InkJetPrinter.cpp) [InkJetPrinter.h](../InkJetPrinter.h) | [InkJetPrinter.cpp](../InkJetPrinter.cpp)
**职责**: 顶层窗口,管理所有子页面和核心业务流程。 **职责**: 顶层窗口,管理所有子页面和核心业务流程。
@@ -247,7 +240,7 @@ RunTimeCtrl (运行时间控制)
- `manager_rfid` - RFID刷卡管理器 - `manager_rfid` - RFID刷卡管理器
**核心定时器**: **核心定时器**:
- `m_Timer` - 主定时器 (200ms),处理设备状态轮询、自动控制 - `m_Timer` - 主定时器 (10ms),处理设备状态轮询、自动控制
- `viscosity_timer` - 粘度检测定时器 (1s) - `viscosity_timer` - 粘度检测定时器 (1s)
**设备自动控制**: **设备自动控制**:
@@ -258,15 +251,15 @@ RunTimeCtrl (运行时间控制)
### 5.3 打印主界面 (MainWidget) ### 5.3 打印主界面 (MainWidget)
[mainwidget.h](file:///mnt/hgfs/share/bSpec/800X600_New_SystemProject-_NewInterface/mainwidget.h) | [mainwidget.cpp](file:///mnt/hgfs/share/bSpec/800X600_New_SystemProject-_NewInterface/mainwidget.cpp) [mainwidget.h](../mainwidget.h) | [mainwidget.cpp](../mainwidget.cpp)
**职责**: 打印操作的主界面,包含打印预览、打印控制、文件管理。 **职责**: 打印操作的主界面,包含打印预览、打印控制、文件管理。
**关键功能**: **关键功能**:
- `generatePrintContent()` - 将场景渲染为打印数据并发送到FPGA - `generatePrintContent()` - 将场景渲染为打印数据并写入缓冲区待发送至FPGA
- `variableItemsUpdate()` - 更新动态图元(日期、计数器等) - `onPreviewScene` - 场景数据转为FPGA点阵数据,解析场景内容生成计数器字模及其它控制信息
- `imageToPrintData()` - 将QImage转换为FPGA点阵数据 - `variableItemsUpdate()` - 更新动态图元(日期、轮班、条形码/二维码等)并写入缓冲区
- `SendPrintDataToFpga()` - 通过串口向FPGA发送打印数据 - `SendPrintDataToFpga()` - 通过串口向FPGA发送打印内容数据
**页面切换**: **页面切换**:
- 通过底部导航按钮(编辑、新增、主界面、管理、消息)切换子页面 - 通过底部导航按钮(编辑、新增、主界面、管理、消息)切换子页面
@@ -274,27 +267,30 @@ RunTimeCtrl (运行时间控制)
### 5.4 系统参数管理 (SysPara) ### 5.4 系统参数管理 (SysPara)
[SysPara.h](file:///mnt/hgfs/share/bSpec/800X600_New_SystemProject-_NewInterface/SysPara.h) [SysPara.h](../SysPara.h)
**职责**: 管理所有系统参数,是系统的数据中枢。所有模块通过 SysPara 读写参数。 **职责**: 管理所有系统参数,是系统的数据中枢。所有模块通过 SysPara 读写参数。
**核心数据结构**: **核心数据结构**:
- `calandar_and_dat_t` - 日历/计数器数据(发送给FPGA) - `calandar_and_dat_t` - 日历/计数器数据(发送给FPGA)
- `bcOption_t` - 条形码选项 - `sysPara_t` - 系统参数设定
- `qrOption_t` - 二维码选项 - `sysStatus_t` - 系统状态结构体
- `QRvars_t` - 二维码变量 - `vars_t` - 变量类型参数设定
- `stepPrint_t` - 分段打印设定 - `stepPrint_t` - 分段打印设定
- `alterPrint_t` - 交替打印设定 - `alterPrint_t` - 交替打印设定
- `Cnt1ByGroup_t` - 分段计米设定 - `Cnt1ByGroup_t` - 分段计米设定
- `PrintSettingModel` - 打印设置模型(跟随作业文件保存) - `PrintSettingModel` - 打印设置模型(跟随作业文件保存)
- `voltePara_t` - 旧的 FPGA 墨点充电参数集结构体,用于 67 版本 FPGA
- `voltePara_t_25Dots` - 目前常用的 72 版本 FPGA 所对应的墨点充电数据集结构
- `voltePara_t_No73` - 96K 40um 喷嘴专用的FPGA墨点充电数据集结构体,专用于73版本(F8.2.1)
**参数持久化**: **参数持久化**:
- 二进制文件: `PARA_ROOT_DIR/sysPara.bin` - 二进制文件: `PARA_ROOT_DIR/sysPara.bin` - 对于系统参数的直接二进制保存
- XML文件: `PARA_ROOT_DIR/defPrintSet.xml` - XML文件: `PARA_ROOT_DIR/defPrintSet.xml` - 默认打印设置保存,新建文件时使用此配置,此配置也可通过[MainInstruction](../MainInstruction.cpp#L25) 打开默认打印设置的设置窗口(实际是复用PrintSetting窗口)。
### 5.5 设备操作 (DevOp) ### 5.5 设备操作 (DevOp)
[DevOp.h](file:///mnt/hgfs/share/bSpec/800X600_New_SystemProject-_NewInterface/DevOp.h) [DevOp.h](../DevOp.h)
**职责**: 封装FPGA寄存器的读写操作,提供设备控制的高层接口。 **职责**: 封装FPGA寄存器的读写操作,提供设备控制的高层接口。
@@ -306,6 +302,7 @@ RunTimeCtrl (运行时间控制)
- 计数器读写: 产品计数、同步计数 - 计数器读写: 产品计数、同步计数
**FPGA地址空间**: **FPGA地址空间**:
通信地址与定义位于[连续墨点喷码机通信协议](连续墨点喷码机通信地址.xlsx),大致内存分布如下
- `0x0000-0x01FF`: 状态读取区 - `0x0000-0x01FF`: 状态读取区
- `0xA400-0xA5FF`: 打印控制寄存器 - `0xA400-0xA5FF`: 打印控制寄存器
- `0xB000-0xCFFF`: 数据写入区(DAC表、打印数据、日历数据等) - `0xB000-0xCFFF`: 数据写入区(DAC表、打印数据、日历数据等)
@@ -313,7 +310,7 @@ RunTimeCtrl (运行时间控制)
### 5.6 串口通信 (Serial) ### 5.6 串口通信 (Serial)
[Serial/serial.h](file:///mnt/hgfs/share/bSpec/800X600_New_SystemProject-_NewInterface/Serial/serial.h) | [Serial/serial.cpp](file:///mnt/hgfs/share/bSpec/800X600_New_SystemProject-_NewInterface/Serial/serial.cpp) [Serial/serial.h](../Serial/serial.h) | [Serial/serial.cpp](../Serial/serial.cpp)
**职责**: 封装与FPGA和STM32的串口通信。 **职责**: 封装与FPGA和STM32的串口通信。
@@ -329,7 +326,7 @@ RunTimeCtrl (运行时间控制)
- 发送队列: `queueFPGA` / `queue` - 发送队列: `queueFPGA` / `queue`
- 接收解析: 通过信号槽分发到上层(`receivedFromFPGA` / `receivedFromSTM32`) - 接收解析: 通过信号槽分发到上层(`receivedFromFPGA` / `receivedFromSTM32`)
### 5.7 日志系统 (Log/) ### 5.7 日志系统 (Log)
**职责**: 提供分级日志记录功能。 **职责**: 提供分级日志记录功能。
@@ -347,7 +344,7 @@ qCritical() << "error"; // 错误日志
### 5.8 运行时间统计 (RunTimeCtrl) ### 5.8 运行时间统计 (RunTimeCtrl)
[RunTimeCtrl](file:///mnt/hgfs/share/bSpec/800X600_New_SystemProject-_NewInterface/runtimectrl.h) [RunTimeCtrl](../runtimectrl.h)
**职责**: 统计软件运行时长,用于设备保养提醒。 **职责**: 统计软件运行时长,用于设备保养提醒。
@@ -375,7 +372,7 @@ qCritical() << "error"; // 错误日志
### 6.2 设备状态轮询 ### 6.2 设备状态轮询
``` ```
timerHandler() (200ms周期) timerHandler()
├── serialFPGA->readData() # 读取FPGA状态寄存器 ├── serialFPGA->readData() # 读取FPGA状态寄存器
├── serialSTM32->readData() # 读取STM32传感器数据 ├── serialSTM32->readData() # 读取STM32传感器数据
├── saveFPGAStatus() # 解析FPGA状态 ├── saveFPGAStatus() # 解析FPGA状态
@@ -458,7 +455,7 @@ PicScene (QGraphicsScene) # 场景,管理所有图元
### 8.1 模块概述 ### 8.1 模块概述
[RFIDManager](file:///mnt/hgfs/share/bSpec/800X600_New_SystemProject-_NewInterface/rfid/rfidmanager.h) [RFIDManager](../rfid/rfidmanager.h)
**职责**: 管理IC卡(墨水卡、溶剂卡、保养卡)的读写与验证。 **职责**: 管理IC卡(墨水卡、溶剂卡、保养卡)的读写与验证。
@@ -488,26 +485,13 @@ PicScene (QGraphicsScene) # 场景,管理所有图元
### 9.1 编译配置 ### 9.1 编译配置
项目使用 qmake 构建系统,主配置文件为 [QtUI.pro](file:///mnt/hgfs/share/bSpec/800X600_New_SystemProject-_NewInterface/QtUI.pro)。 项目使用 qmake 构建系统,主配置文件为 [QtUI.pro](../QtUI.pro)。
**目标平台**: **目标平台**:
- ARM Linux: `TARGET = QtUI` - ARM Linux: `TARGET = QtUI`
- 交叉编译: 使用 `linux-arm-g++` mkspec - 交叉编译: 使用 `linux-arm-g++` mkspec
- x86桌面: 使用 `linux-g++` mkspec,用于开发调试 - x86桌面: 使用 `linux-g++` mkspec,用于开发调试
**关键宏定义**:
```makefile
DEFINES += ARM # ARM平台
DEFINES += QTV3 # Qt版本3兼容
DEFINES += VNLG # 威利品牌
DEFINES += WARNING # 警告功能
DEFINES += COUNTER1_BY_GROUP # 分段计米
DEFINES += PICSCENE # 场景编辑
DEFINES += MODBUS # Modbus支持
DEFINES += __CONVERTERWIFI__ # WiFi支持
DEFINES += TEMPMIMA # 临时密码
```
### 9.2 模块依赖 ### 9.2 模块依赖
```makefile ```makefile
@@ -530,7 +514,7 @@ make
## 10. 关键配置与宏定义 ## 10. 关键配置与宏定义
### 10.1 全局宏 ([myinclude.h](file:///mnt/hgfs/share/bSpec/800X600_New_SystemProject-_NewInterface/myinclude.h)) ### 10.1 全局宏 ([myinclude.h](../myinclude.h))
| 宏 | 说明 | | 宏 | 说明 |
|-----|------| |-----|------|
@@ -543,7 +527,7 @@ make
| `TEST_MODE` | 测试模式 | | `TEST_MODE` | 测试模式 |
| `SIMULATE_PRINTING_MODE` | 模拟打印模式 | | `SIMULATE_PRINTING_MODE` | 模拟打印模式 |
### 10.2 路径定义 ([SysPara.h](file:///mnt/hgfs/share/bSpec/800X600_New_SystemProject-_NewInterface/SysPara.h)) ### 10.2 路径定义 ([SysPara.h](../SysPara.h))
| 路径宏 | 值 | 说明 | | 路径宏 | 值 | 说明 |
|--------|-----|------| |--------|-----|------|
@@ -552,7 +536,7 @@ make
| `SYS_ROOT_DIR` | `/home/plg/` | 系统根目录 | | `SYS_ROOT_DIR` | `/home/plg/` | 系统根目录 |
| `UDISK_DOC_ROOT_DIR` | `/udisk/doc/` | U盘文档目录 | | `UDISK_DOC_ROOT_DIR` | `/udisk/doc/` | U盘文档目录 |
### 10.3 版本号 ([VerBVersion.h](file:///mnt/hgfs/share/bSpec/800X600_New_SystemProject-_NewInterface/VerBVersion.h)) ### 10.3 版本号 ([VerBVersion.h](../VerBVersion.h))
```cpp ```cpp
#define UP_PRINTER_MAJOR_VER 6 #define UP_PRINTER_MAJOR_VER 6
@@ -563,7 +547,7 @@ make
--- ---
## 11. 新同事上手指南 ## 11. 上手指南
### 11.1 开发环境搭建 ### 11.1 开发环境搭建
@@ -580,12 +564,12 @@ make
### 11.2 代码阅读顺序建议 ### 11.2 代码阅读顺序建议
1. **入门**: [main.cpp](file:///mnt/hgfs/share/bSpec/800X600_New_SystemProject-_NewInterface/main.cpp) → [myinclude.h](file:///mnt/hgfs/share/bSpec/800X600_New_SystemProject-_NewInterface/myinclude.h) → [InkJetPrinter.h](file:///mnt/hgfs/share/bSpec/800X600_New_SystemProject-_NewInterface/InkJetPrinter.h) 1. **入门**: [main.cpp](../main.cpp) → [myinclude.h](../myinclude.h) → [InkJetPrinter.h](../InkJetPrinter.h)
2. **核心数据**: [SysPara.h](file:///mnt/hgfs/share/bSpec/800X600_New_SystemProject-_NewInterface/SysPara.h) → [DevOp.h](file:///mnt/hgfs/share/bSpec/800X600_New_SystemProject-_NewInterface/DevOp.h) 2. **核心数据**: [SysPara.h](../SysPara.h) → [DevOp.h](../DevOp.h)
3. **UI页面**: [MainWidget](file:///mnt/hgfs/share/bSpec/800X600_New_SystemProject-_NewInterface/mainwidget.h) → [TestPrintWidget](file:///mnt/hgfs/share/bSpec/800X600_New_SystemProject-_NewInterface/testprintwidget.h) 3. **UI页面**: [MainWidget](../mainwidget.h) → [TestPrintWidget](../testprintwidget.h)
4. **场景系统**: [scene/picscene.h](file:///mnt/hgfs/share/bSpec/800X600_New_SystemProject-_NewInterface/scene/picscene.h) → [scene/PicSceneLoader.h](file:///mnt/hgfs/share/bSpec/800X600_New_SystemProject-_NewInterface/scene/PicSceneLoader.h) → [scene/ViewModels.h](file:///mnt/hgfs/share/bSpec/800X600_New_SystemProject-_NewInterface/scene/ViewModels.h) 4. **场景系统**: [scene/picscene.h](../scene/picscene.h) → [scene/PicSceneLoader.h](../scene/PicSceneLoader.h) → [scene/ItemCommon.h](../scene/ItemCommon.h)
5. **通信层**: [Serial/serial.h](file:///mnt/hgfs/share/bSpec/800X600_New_SystemProject-_NewInterface/Serial/serial.h) 5. **通信层**: [Serial/serial.h](../Serial/serial.h)
6. **RFID**: [rfid/rfidmanager.h](file:///mnt/hgfs/share/bSpec/800X600_New_SystemProject-_NewInterface/rfid/rfidmanager.h) 6. **RFID**: [rfid/rfidmanager.h](../rfid/rfidmanager.h)
### 11.3 常见开发任务 ### 11.3 常见开发任务
@@ -623,4 +607,9 @@ make
--- ---
> **文档维护**: 本文档应随项目迭代持续更新。如有疑问,请联系项目负责人。 > **文档维护**: 本文档应随项目迭代持续更新。如有疑问,请联系项目负责人。
**文档更新记录**
- 2026-07-23: 创建此文档 — 卜永仕
+1 -1
View File
@@ -1151,7 +1151,7 @@ void RFIDManager::markMaintenanceCard(const QString &blockData)
sysPara->RFIDPara.runTime = 0; sysPara->RFIDPara.runTime = 0;
RunTimeCtrl::instance()->updatePara(&sysPara->RFIDPara); RunTimeCtrl::instance()->updatePara(&sysPara->RFIDPara);
sysPara->saveRFIDPara(); sysPara->saveRFIDPara();
emit sig_showMsg(tr("刷保养卡成功!")); // emit sig_showMsg(tr("刷保养卡成功!"));
} }
else if(ret == -10) { else if(ret == -10) {
emit sig_showMsg(tr("刷超级保养卡失败,请联系厂商。")); emit sig_showMsg(tr("刷超级保养卡失败,请联系厂商。"));