读取二维码
本页面详细介绍 QR Code 文件传输工具的接收端功能,包括如何从屏幕读取二维码并还原原始文件。接收端是整个工具的核心组件之一,与发送端配合使用,实现安全、便捷的文件传输。
功能概述¶
接收端主要负责从屏幕捕获二维码图像、解析其中包含的数据、验证数据完整性,并最终还原为原始文件或文件夹。整个过程采用分步骤的方式,确保数据传输的安全性和完整性。
核心功能特性:¶
- 屏幕捕获:自动捕获屏幕图像,无需手动选择区域
- 智能识别:支持同时识别多个二维码,自动处理多任务
- 数据验证:对每个数据块进行哈希验证,确保数据完整性
- 进度显示:实时显示接收进度,让用户了解当前状态
- 区块链记录:每一步操作都会记录到哈希链,确保可追溯性
Sources: receive.py
使用方法¶
接收端提供两种使用方式:使用预编译的可执行文件(推荐)和使用 Python 源码运行。两种方式的功能完全一致。
可执行文件方式¶
将 qr-receive.exe 复制到任意目录后,使用以下命令:
Python 源码方式¶
确保已安装 Python 3.8+ 和项目依赖后,使用以下命令:
参数说明:
| 参数 | 说明 | 是否必需 |
|------|------|----------|
| -o, --output | 指定还原文件的输出目录 | 是(read 命令) |
Sources: receive.py
工作原理¶
二维码读取流程包括多个步骤,从屏幕捕获到最终文件还原,每个环节都有严格的数据验证。
读取流程¶
以下是完整的二维码读取流程:
flowchart TD
A[开始读取] --> B[屏幕捕获]
B --> C[二维码识别]
C --> D[数据解析与验证]
D --> E{是否收集完整?}
E -->|否| F[等待后重试]
F --> B
E -->|是| G[合并数据块]
G --> H[Base64 解码]
H --> I[解压缩]
I --> J[还原文件]
J --> K[记录区块链]
K --> L[完成]
详细步骤说明:¶
- 屏幕捕获:使用
pyautogui库捕获整个屏幕图像,并转换为 OpenCV 可处理的格式。 - 二维码识别:使用
pyzbar库从捕获的图像中识别并解析二维码数据。 - 数据解析与验证:提取二维码中的元数据(任务ID、总块数、当前块索引等)和实际数据块,验证数据完整性。
- 数据收集:持续捕获屏幕,直到收集到完整任务的所有数据块。
- 合并数据块:将收集到的所有数据块按照索引顺序合并为完整的 Base64 字符串。
- Base64 解码:将 Base64 字符串解码为压缩文件。
- 解压缩:将压缩文件解压为原始文件或文件夹。
- 区块链记录:将每一步操作记录到哈希链,确保操作可追溯。
Sources: modules/qrcode_reader.py
配置说明¶
接收端的行为可以通过 config.ini 文件中的配置项进行调整。以下是与二维码读取相关的主要配置项:
QRCodeReader 配置段¶
| 配置项 | 说明 | 默认值 |
|---|---|---|
| MaxAttempts | 最大尝试次数 | 30 |
| AttemptInterval | 每次尝试的间隔时间(秒) | 2 |
配置示例¶
配置建议:
- 如果二维码显示较慢,可以增加 MaxAttempts 值或缩短 AttemptInterval
- 如果网络环境不稳定,建议适当增加 MaxAttempts 值
- 对于快速显示的二维码,可以缩短 AttemptInterval 以加快接收速度
Sources: config.ini
使用示例¶
以下是一个完整的使用示例,展示如何从发送端传输文件到接收端:
步骤 1:准备接收端¶
在接收端电脑上,打开命令行窗口,运行以下命令:
# 使用可执行文件
qr-receive.exe read -o C:\Downloads\received_files
# 或使用 Python 源码
python receive.py read -o C:\Downloads\received_files
步骤 2:启动发送端¶
在发送端电脑上,准备好要传输的文件或文件夹,然后运行:
# 使用可执行文件
qr-send.exe generate -i C:\Documents\important_file.pdf
# 或使用 Python 源码
python send.py generate -i C:\Documents\important_file.pdf
步骤 3:完成传输¶
发送端开始显示二维码后,将两个屏幕对齐(或通过视频会议等方式共享屏幕),接收端会自动识别并收集二维码数据,完成后会在指定的输出目录中还原原始文件。
后续步骤¶
完成二维码读取和文件还原后,您可以:
- 验证区块链完整性:运行
qr-receive.exe verify命令,确保传输过程的可追溯性 - 查看日志文件:检查
qrcode_transfer.log文件,了解详细的操作记录 - 调整配置:根据实际使用情况,修改
config.ini文件中的参数,优化使用体验