# offline-transfor-pc-sender **Repository Path**: self-testing-oxchen/offline-transfor-pc-sender ## Basic Information - **Project Name**: offline-transfor-pc-sender - **Description**: pc平台发送的端 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-07-28 - **Last Updated**: 2026-08-17 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # Offline Sender · 离线数据传输工具(PC 端发送方) > 通过二维码在**无网络环境**下离线传输文本与小文件。 > 发送方把文本/文件 Base64 编码后分片,逐片生成二维码循环切换, > 接收方用摄像头扫码即可还原数据。 - 作者:陈剑 - 邮箱:1050138371@qq.com - 微信小程序:空隙码传输 - 版本:v1.0.0 --- ## ✨ 功能特性 - **离线传输**:发送方与接收方均无需联网,仅靠屏幕 + 摄像头。 - **双数据源**:支持纯文本字符串与小文件(≤20KB)。 - **分片二维码**:自动 Base64 编码、分片、循环播放,纠错级别 H。 - **速度可调**:二维码切换间隔 500–2000ms 可调,适配不同扫码环境。 - **断点续传**:可暂停传输,或对指定分片单独重发。 - **双主题**:深色 / 浅色一键切换。 - **状态可视**:进度条 + 当前片号 + 总片数实时显示。 - **合规透明**:内置开源授权信息弹窗,随包附带完整许可证文本。 --- ## 🧩 技术栈 | 组件 | 版本 | 许可证 | 用途 | |------|------|--------|------| | Qt | 5.15.2 (MinGW 32-bit) | GNU LGPL v3 | GUI 框架 | | QZXing | 3.3 | Apache License 2.0 | 二维码生成 | | 编译器 | MinGW 8.1.0 32-bit | — | 与 QZXing 库一致 | - 语言:C++17 - 构建系统:qmake(`.pro`) - 二维码:450×450,纠错级别 H,最小显示 450×450 --- ## 📁 目录结构 ``` offline-transfor-pc-sender/ ├── README.md # 本文件 ├── USERGUIDE.md # 使用手册 ├── LICENSE # 许可证说明(含第三方组件声明) ├── NOTICE # 第三方组件版权声明 └── offline-sender/ # 项目工程 ├── offline-sender.pro # qmake 工程文件 ├── app.rc # Windows 图标 + 版本信息资源 ├── resources.qrc # Qt 资源 ├── images/logo.png # 软件图标 ├── logo.ico # Windows 图标 ├── lib/ # QZXing 库(vendored,保留入库) │ ├── libQZXing3.a │ └── QZXing3.dll ├── licenses/ # 随包分发的许可证全文 │ ├── LICENSE.Qt.LGPLv3.txt │ ├── LICENSE.GPLv3.txt │ └── LICENSE.QZXing.Apache2.txt ├── main.cpp # 程序入口 ├── mainwindow.h/.cpp/.ui # 主窗口 └── theme.h/.cpp # 双主题 QSS 管理 ``` --- ## 🚀 快速开始 ### 从发布包运行 解压发布包后,直接双击 `offline-sender.exe` 即可运行。 运行所需 32 位 Qt/MinGW 运行时 DLL 已随包提供,无需额外安装。 ### 从源码构建 依赖环境(固定版本,需与 QZXing 的 32-bit MinGW 一致): - Qt:`E:\soft\qt\5.15.2\mingw81_32\bin` - MinGW:`E:\soft\qt\Tools\mingw810_32\bin` - QZXing 头文件:`E:\qt-project\thirdlib\qzxing-3.3.0\src` ```powershell $env:Path = "E:\soft\qt\5.15.2\mingw81_32\bin;E:\soft\qt\Tools\mingw810_32\bin;" + $env:Path cd offline-sender Remove-Item -Recurse -Force build -ErrorAction SilentlyContinue New-Item -ItemType Directory -Force build | Out-Null cd build qmake ../offline-sender.pro -spec win32-g++ "CONFIG+=release" mingw32-make -j4 ``` 产物:`offline-sender/build/release/offline-sender.exe` (构建后 `QZXing3.dll` 与 `licenses/` 会自动复制到该目录。) ### 部署运行时 DLL 32-bit Qt + ANGLE 渲染,需保证同目录下有匹配的 32 位运行时 DLL: `Qt5Core/Gui/Widgets/Svg.dll`、`libEGL/libGLESv2/opengl32sw/D3Dcompiler`、 `libgcc_s_dw2-1.dll`、`libstdc++-6.dll`、`libwinpthread-1.dll`, 以及 plugins:`platforms/qwindows.dll`、`styles/qwindowsvistastyle.dll`、`imageformats/*`。 > ⚠️ `windeployqt` 可能误拷 64 位 mingw 运行时(`libgcc_s_seh-1.dll`), > 需删除 `libgcc_s_seh-1.dll`,保留 `libgcc_s_dw2-1.dll`,否则启动报 0xC000007B。 --- ## 📦 传输格式约定 为保证接收端兼容,分片格式固定为: ``` 序号(3位补零),总片数(3位补零),类型,Base64数据 ``` - 文本类型:`001,003,str,xxxx` - 文件类型:`001,003,file:文件名,xxxx` - Base64 使用 URL 安全字符(`+ → -`,`/ → _`) - 单分片最大数据长度 1024 字符 - 文件大小上限 20KB 修改传输逻辑时请保持上述格式不变。 --- ## 📜 开源授权 本软件在**不购买商业许可证**的前提下使用 Qt(LGPL v3)与 QZXing(Apache 2.0)。 - 程序内点击右上角「**开源授权**」按钮可查看完整的第三方许可证信息。 - 随包 `licenses/` 目录附带许可证全文。 - 依 LGPL v3 第 6 条,Qt 源码可从 https://download.qt.io/archive/qt/5.15/5.15.2/single/ 获取,或邮件联系作者索取(本要约自发布起 3 年内有效)。 - QZXing 源码:https://github.com/ftylitak/qzxing (未修改官方 release 版本) 详见仓库根 `LICENSE` 与 `NOTICE` 文件。 --- ## 🐛 常见问题 | 现象 | 原因 / 解决 | |------|-------------| | 启动报 0xC000007B / 0xC0000135 | 运行时 DLL 架构不匹配或缺失,按上文用 32 位 Qt/MinGW 的 DLL | | 链接报找不到 QZXing 符号 | 确认 `lib/libQZXing3.a` 存在且为 release 版 | | 摄像头扫不出二维码 | 二维码显示尺寸过小,需 ≥ 450×450;调大窗口或降低切换速度 | | 接收端丢片 | 用「重发分片」功能对缺失序号单独重发 | --- ## 📝 提交与分支约定 - 主分支:`master` - 远程:gitee `origin` - 提交信息使用中文,简洁描述改动。 - 中间产物(build 目录、`*.o`、`moc_*.cpp`、`ui_*.h` 等)已 `.gitignore` 忽略。 - `offline-sender/lib/` 下的 QZXing 库需保留入库。