# Easy_Data_Process **Repository Path**: from_0_To_Dead_Automation/easy_-data_-process ## Basic Information - **Project Name**: Easy_Data_Process - **Description**: 通过此软件可直接采集威纶通触摸屏的报警历史记录和操作历史记录,使用时需跟触摸屏同一网段内 - **Primary Language**: Unknown - **License**: MIT - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 1 - **Forks**: 0 - **Created**: 2026-04-25 - **Last Updated**: 2026-04-27 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # EasyProcess - DB 日志解析工具 一款用于解析工业触摸屏 SQLite 数据库的桌面工具,支持 FTP 远程采集和本地文件解析,可将报警事件日志与操作记录日志导出为 CSV 文件。 ## 功能特性 - **机台 + 触摸屏两级管理** — 先添加机台,再在机台下添加触摸屏 IP,配置持久化保存到 `hmi_config.json` - **FTP 按机台批量采集** — 选择机台后自动采集该机台下所有触摸屏的数据,下载完立即解析为 CSV - **CSV 文件以触摸屏名命名** — 每台触摸屏独立生成 CSV 文件,如 `AMQ-10_事件日志.csv`、`AMQ-10_操作日志.csv` - **报警统计** — 读取报警事件日志 CSV,统计报警信息出现次数并排序,支持按日期范围过滤 - **本地文件解析** — 选择本地 `.db` 文件,解析并导出为 CSV - **使用须知** — 内置功能说明页面,详细介绍每个选项卡的功能与操作方法 - **运行日志文件** — 软件运行时自动在同目录下生成按日期命名的日志文件,便于排查问题 - **美化 GUI** — 基于 PyQt5 + qtawesome,现代化界面风格,左右分栏布局 ## 界面预览 程序包含五个选项卡: | 选项卡 | 功能 | |--------|------| | 🖥 触摸屏管理 | 左侧:机台列表(增删改);右侧:选中机台下的触摸屏列表(增删改) | | ☁ FTP 数据采集 | 左侧:选择采集机台(单选);右侧:预览、采集选项、进度日志 | | 📄 本地文件解析 | 选择本地 DB 文件解析导出 | | 📊 报警统计 | 选择报警事件日志 CSV 文件,统计报警出现次数,支持日期范围过滤,导出统计结果 | | 📖 使用须知 | 内置功能说明与操作指引,详细描述各选项卡的使用方法 | ### 数据模型 ```json [ { "machine_name": "B12", "hmis": [ {"name": "AMQ-10", "ip": "192.168.250.10"}, {"name": "AMQ-11", "ip": "192.168.250.11"} ] } ] ``` ## 导出格式 ### 报警事件日志 (`{触摸屏名}_事件日志.csv`) | 列名 | 说明 | |------|------| | 时间 | 报警触发时间 | | 报警信息 | 报警描述(从多语言字段自动提取) | ### 操作记录日志 (`{触摸屏名}_操作日志.csv`) | 列名 | 说明 | |------|------| | 用户名 | 操作用户 | | 窗口ID | 操作所在窗口 | | 对象注释 | 操作对象说明 | | 标签名 | 关联标签 | | 信息 | 操作详情 | | 主机名 | 触摸屏主机名 | ### 报警次数统计 (`{机台号}报警次数统计.csv`) | 列名 | 说明 | |------|------| | 报警信息 | 报警描述 | | 出现次数 | 该报警信息在指定日期范围内出现的次数 | > 日期范围默认为一个月前至今天,可通过日期选择器自定义。 ## 项目结构 ``` EasyProcess/ ├── db_export_gui.py # 主程序(PyQt5 GUI) ├── export_db_to_csv.py # 命令行版导出脚本 ├── build_exe.bat # 打包为 EXE 的脚本 ├── .gitignore ├── LICENSE └── README.md ``` ## 快速开始 ### 环境要求 - Python 3.9+ - 推荐使用 [uv](https://github.com/astral-sh/uv) 管理虚拟环境 ### 安装依赖 **使用 uv(推荐):** ```bash uv venv uv pip install PyQt5 qtawesome --python .venv/Scripts/python.exe ``` **使用标准 pip:** ```bash python -m venv .venv .venv\Scripts\activate pip install PyQt5 qtawesome ``` ### 运行程序 **使用 uv 环境:** ```bash .venv\Scripts\python.exe db_export_gui.py ``` **使用标准 Python:** ```bash python db_export_gui.py ``` ### 命令行版 如果不需要 GUI,可以直接使用命令行脚本: ```bash python export_db_to_csv.py ``` ## 打包为 EXE 双击 `build_exe.bat` 即可自动打包,脚本会: 1. 自动检测系统是否安装了 uv 2. 自动查找项目虚拟环境或系统 Python 3. 自动安装缺失的依赖(PyQt5、qtawesome、PyInstaller) 4. 执行打包,生成单文件 EXE 到 `dist/` 目录 5. 自动清理构建临时文件 打包完成后,`dist/EasyProcess_DBTool.exe` 可在没有 Python 环境的 Windows 电脑上直接运行。 > **注意**:打包后配置文件 `hmi_config.json`、日志文件和 CSV 输出都保存在 EXE 同目录下。 ## FTP 连接说明 程序使用以下 FTP 格式连接触摸屏: ``` ftp://uploadhis:111111@<触摸屏IP> ``` FTP 目录结构: ``` / ├── eventlog/ │ └── event.db └── operationlog/ └── operationlog.db ``` 采集流程: 1. 在「触摸屏管理」中添加机台和触摸屏 2. 在「FTP 数据采集」中选择要采集的机台(单选) 3. 勾选采集类型(事件日志/操作日志) 4. 点击「开始采集」,程序自动连接每台触摸屏下载 DB 并解析为 CSV ## 报警统计使用说明 1. 在「报警统计」选项卡中,点击「添加文件」或「添加文件夹」选择报警事件日志 CSV 文件 2. 输入机台号(如 A12),用于生成统计结果文件名 3. 设置日期范围(开始日期至结束日期),只统计该范围内的报警记录 4. 选择输出目录,点击「开始统计」 5. 统计结果保存为 `{机台号}报警次数统计.csv`,按出现次数从大到小排列 ## 运行日志 程序运行时会在同目录下自动生成日志文件,文件名格式:`easyprocess_YYYYMMDD.log` 日志格式: ``` [2026-04-27 10:30:00] [INFO] EasyProcess 启动 [2026-04-27 10:30:05] [INFO] 添加机台: B12 [2026-04-27 10:31:00] [ERROR] FTP 错误 (192.168.250.10): ... ``` ## 技术栈 - **GUI 框架**:PyQt5 - **图标库**:qtawesome (Font Awesome) - **数据库**:SQLite (Python 内置 sqlite3) - **FTP 客户端**:ftplib (Python 内置) - **日志系统**:logging (Python 内置) - **打包工具**:PyInstaller - **配置存储**:JSON ## 开源协议 本项目基于 [MIT License](LICENSE) 开源。