Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
20 commits
Select commit Hold shift + click to select a range
76f7159
fix: 修复小文件传输卡死问题并增加喷泉码离线单文件版本
Aug 8, 2026
a8304c7
feat: 引入 Cimbar 高速传输专业版 (cimbar-transfer.html)
Aug 9, 2026
92acc2d
fix: 智能匹配 SSL 证书路径以保障 HTTPS 本地 Server 正常启动
Aug 9, 2026
a92bc8f
docs: 补充 iPhone 作为 Cimbar 接收端的详细使用指南与配置建议
Aug 9, 2026
7ee408a
feat(ios): 增加原生 iPhone (iOS) Cimbar/CFC 客户端模块及 WKWebView 复用解码架构
Aug 9, 2026
39fad0c
fix(ios): 实装 WebView 内置 HUD 解码进度渲染与图标边缘消除
Aug 9, 2026
6424c5c
fix(ios): 相机与进度区默认同屏展示,计时改为识别到二维码才起表
Aug 9, 2026
204fa53
fix(ios): 修复代码审查发现的 7 项缺陷
Aug 9, 2026
53c7b62
refactor(ios): 移除从未链接引擎的路线 A 骨架
Aug 9, 2026
e4b08fd
feat(ios): App 显示名改为中文「无网码传」/ 英文「Cimbar」
Aug 9, 2026
c20aa28
fix(ios): 修正「关于算法」中与实现不符的说明
Aug 9, 2026
c961073
docs(refactor): 补充 MIT License、完成版本命名对齐与 README 架构表格重构
Aug 9, 2026
3a3bfdb
fix: 修复 GitHub Pages 环境因 WASM 异步加载未完成导致的 _cimbare_configure is not a …
Aug 9, 2026
7247c84
docs(feat): 更新高速专业版 (Cimbar WASM) 异步装载逻辑与 README 界面截图
Aug 9, 2026
3be5dbe
fix(ios): 引入迟滞消抖 (Hysteresis Debounce) 衰减缓冲区 (1000ms),消除扫码识别过程中因手抖/掉帧…
Aug 9, 2026
fd9cdf8
refactor: 将根目录下的所有示例预览图片统一整理至 images/ 目录并同步更新 README.md 引用路径
Aug 9, 2026
c795cd8
feat(ios): 接收端支持标准单码与喷泉码 4C 的全协议自动识别
Aug 10, 2026
4d37363
fix(ios): 消除 WebReceiverServer 的 MainActor 隔离警告
Aug 10, 2026
2a5b3c6
refactor: 将 index.html 倒计时默认自动跳转目标更正为 Cimbar 4-Color 高速专业版 (cimbar-tr…
Aug 9, 2026
ae58568
docs: 全面审查并修正文档与实测数据
Aug 10, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
16 changes: 16 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -1 +1,17 @@
lib.html
.DS_Store

# Xcode & iOS Build Artifacts & User Data
build/
**/*.xcodeproj/xcuserdata/
**/*.xcworkspace/xcuserdata/
**/*.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings
*.xcuserdata
*.xcresult
*.mode1v3
*.mode2v3
*.perspectivev3
*.pbxuser
DerivedData/
ios-cfc-client/build/
ios-cfc-client/DerivedData/
241 changes: 241 additions & 0 deletions CIMBAR-TRANSFER-README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,241 @@
# Cimbar 传输助手使用说明

## 📖 简介

Cimbar 传输助手是一个基于视觉二维码的文件传输工具,通过摄像头扫描屏幕上的动态二维码实现文件传输。无需网络连接,完全离线可用。

## ⚡ 传输速度

- **典型速度**:1MB 文件
- 网页端接收:约 **40 秒**
- iOS 原生客户端接收:约 **32 秒**(15 FPS 实测,见 [ios-cfc-client](ios-cfc-client/README.md))
- **影响因素**:
- 摄像头质量和对焦速度
- 光线条件
- 屏幕刷新率
- 编码模式选择

## 🌐 浏览器兼容性

### ✅ 推荐浏览器

#### macOS / Windows / Linux
- **Chrome**(推荐)
- **Firefox**
- **Edge**
- Safari(macOS)

#### iOS / iPadOS
- **Chrome for iOS**(强烈推荐)
- **Firefox for iOS**
- **Edge for iOS**

> ⚠️ **重要提示**:iOS Safari 浏览器存在兼容性问题,**不建议使用**。请使用 Chrome、Firefox 或 Edge 的 iOS 版本。

#### Android
- **Chrome for Android**(推荐)
- **Firefox for Android**
- **[CFC Android App](https://github.com/sz3/cfc)**(官方客户端,性能最佳)

## 📱 移动端优化建议

### 📱 苹果手机 (iPhone / iPad) 作为接收端的详细指南

> ✅ **首选方案:使用原生客户端 `ios-cfc-client`。**
> 本仓库提供 iPhone 原生接收端 App([ios-cfc-client](ios-cfc-client/README.md)),它在 App 内自带本地 HTTP 服务与 WKWebView,
> 复用与网页端完全同一份 WASM 解码引擎,**无需电脑起 HTTPS 服务、无需同一局域网、无需信任自签证书**,
> 并且实测比网页端接收更快(1MB 约 32 秒 vs 约 40 秒)。它还能同时自动识别标准单码与喷泉码 4C。
> 下面的浏览器方案仅在不便安装 App 时作为备选。

> ⚠️ **走浏览器时的核心注意**:iPhone 上**不能直接双击打开本地离线 HTML 文件**(WASM 模块与 Web Worker 受 WebKit 同源安全限制),必须通过 **HTTPS 网页地址** 访问。

#### 1. 运行环境与浏览器要求(浏览器备选方案)
1. **启动电脑端 HTTPS 服务**:在电脑终端运行 `python3 https_server.py`(会自动智能加载证书并在 `4443` 端口启动)。
2. **连接同一局域网**:确保 iPhone 与电脑处于同一 Wi-Fi 局域网(或 iPhone 连接电脑热点)。
3. **推荐使用 Chrome for iOS**:在 iPhone 上的 App Store 下载 **Chrome**、**Firefox** 或 **Edge** 浏览器(避免直接使用 Safari),访问 `https://<电脑局域网IP>:4443/cimbar-transfer.html`。
4. **信任自签名证书与允许权限**:首次访问出现安全警告时,点击“高级” -> “继续访问”,并在弹窗中勾选允许使用 **摄像头** 权限。

#### 2. 提高 iPhone 接收成功率的配置建议
- **发送端编码模式选择**:发送端建议选择 **`B` (稳定模式)** 或 **`Bu` (高对比度模式)**。黑白高对比度模式能 100% 避开 iOS 屏幕色彩校正引起的识别失真。
- **发送端帧率控制**:发送端建议降低为 **10 - 12 FPS**(默认 15-20 FPS),有效消除 iPhone 摄像头产生的动态运动模糊(Motion Blur)。
- **环境光与显示调节**:关闭发送端的“夜览/护眼模式 (Night Shift)”与“原彩显示 (True Tone)”,并调高发送端屏幕亮度,避免屏幕强光反射。
- **扫描对焦技巧**:iPhone 保持稳定并距离屏幕约 **25cm - 40cm**,使 Cimbar 矩阵在 iPhone 屏幕上占据约 60% ~ 80% 的画面区域。

### Android 用户
1. 推荐使用 [CFC Android App](https://github.com/sz3/cfc)
- 专为 Cimbar 优化
- 更好的解码性能
- 更低的功耗
2. 如果使用浏览器,Chrome 是最佳选择

## 🚀 使用步骤

### 发送文件

1. 点击"发送"标签
2. 拖拽文件或点击选择文件
3. 选择编码模式:
- **B**:稳定模式(默认推荐)
- **Bm**:改进模式
- **Bu**:高对比度模式
- **4C**:高密度模式(速度快但要求高)
4. 调整帧率(5-20 FPS,默认 15)
5. 点击"开始编码传输"
6. 将屏幕朝向接收端摄像头

### 接收文件

1. 点击"接收"标签
2. 点击"启动摄像头"
3. 授予摄像头权限
4. 将摄像头对准发送端屏幕
5. 等待自动解码和下载
6. 文件会自动保存到下载文件夹

## 💡 优化建议

### 提高传输速度

1. **选择合适的编码模式**
- 小文件(< 1MB):使用 B 或 Bm 模式
- 大文件:尝试 4C 模式(如果摄像头质量好)

2. **调整帧率**
- 高性能设备:15-20 FPS
- 普通设备:10-15 FPS
- 低性能设备:5-10 FPS

3. **优化环境**
- 确保充足的光线
- 避免屏幕反光
- 保持摄像头稳定
- 清洁摄像头镜头

### 提高成功率

1. **对准技巧**
- 保持适当距离(20-50cm)
- 确保二维码完整出现在画面中
- 避免过度倾斜角度

2. **设备设置**
- 关闭自动亮度调节
- 提高屏幕亮度
- 启用摄像头自动对焦

## 🔧 技术细节

### 工作原理

1. 发送端将文件编码为动态二维码序列
2. 每个二维码包含一部分数据(使用喷泉码技术)
3. 接收端通过摄像头扫描二维码
4. 自动重组和解压缩文件

### 编码模式对比

| 模式 | 稳定性 | 速度 | 适用场景 |
|------|--------|------|----------|
| B | ⭐⭐⭐⭐⭐ | ⭐⭐⭐ | 通用场景,最稳定 |
| Bm | ⭐⭐⭐⭐ | ⭐⭐⭐⭐ | 平衡性能和稳定性 |
| Bu | ⭐⭐⭐⭐⭐ | ⭐⭐⭐ | 低对比度环境 |
| 4C | ⭐⭐⭐ | ⭐⭐⭐⭐⭐ | 高质量摄像头,追求速度 |

## ❓ 常见问题

### Q: 为什么传输速度慢?
A: 可能原因:
- 摄像头质量差或对焦慢
- 光线不足
- 选择了过于密集的编码模式
- 设备性能较低

### Q: 为什么解码失败?
A: 可能原因:
- 摄像头未对准
- 距离太远或太近
- 屏幕反光或眩光
- 使用了不兼容的浏览器(如 iOS Safari)

### Q: 文件传输中断怎么办?
A:
- 点击"重置"按钮重新开始
- 检查摄像头是否被遮挡
- 确保发送端持续显示二维码

### Q: 支持多大的文件?
A: 理论上无限制,但建议:
- 小文件(< 10MB):体验最佳
- 中等文件(10-50MB):可以接受
- 大文件(> 50MB):需要较长时间

## 📞 支持与反馈

- **GitHub**: [sz3/libcimbar](https://github.com/sz3/libcimbar)
- **Android App**: [sz3/cfc](https://github.com/sz3/cfc)
- **问题反馈**: 请提供浏览器版本、设备型号和具体问题描述

## 📁 项目文件说明

### cimbar-deps/
**Cimbar 核心依赖库目录**

包含 Cimbar 编解码所需的所有核心文件:
- `cimbar_js.2026-01-20T0312.js` - WebAssembly 模块(编码+解码)
- `cimbar_js.2026-01-20T0312.wasm` - WASM 二进制文件
- `main.2026-01-20T0312.js` - 发送端编码逻辑
- `recv.2026-01-20T0312.js` - 接收端解码逻辑
- `recv-worker.2026-01-20T0312.js` - Worker 解码进程
- `zstd.2026-01-20T0312.js` - Zstandard 压缩算法
- `tailwind.min.js` - Tailwind CSS 框架(本地化)
- `vconsole.min.js` - vConsole 调试工具(本地化)

> 💡 这些文件从原始 Cimbar 项目复制而来,进行了路径适配以支持本地部署。

### cimbar-deps-start/
**HTTPS 服务器证书目录**

包含 HTTPS 服务所需的 SSL 证书:
- `cert.pem` - SSL 证书文件
- `key.pem` - SSL 私钥文件
- `generate_cert.sh` - 自签证书生成脚本(证书过期或需换 IP 时重新生成)

> ⚠️ **重要**:现代浏览器要求摄像头访问必须使用 HTTPS 协议。此目录中的自签名证书用于本地开发测试。

### https_server.py
**Python HTTPS 服务器脚本**

一个简单的 Python HTTP 服务器,提供以下功能:

#### 主要特性
1. **HTTPS 支持** - 使用 SSL 证书加密通信
2. **静态文件服务** - 托管 cimbar-transfer.html 及相关资源
3. **状态管理 API** - 提供文件传输进度跟踪接口

#### API 端点
- `GET /get_status` - 获取当前传输状态
- `POST /update_progress` - 更新接收进度
- `POST /request_frame` - 请求特定帧
- `POST /reset` - 重置传输状态

#### 启动方式
```bash
python3 https_server.py
```

服务器将在 `https://0.0.0.0:4443` 启动,可通过以下地址访问:
- `https://localhost:4443/cimbar-transfer.html`
- `https://<你的IP>:4443/cimbar-transfer.html`

> 🔒 **为什么需要 HTTPS?**
> - 浏览器安全策略要求摄像头访问必须使用 HTTPS
> - 自签名证书会在首次访问时显示安全警告,点击"高级"→"继续访问"即可
> - 生产环境应使用正式的 SSL 证书

## 📄 许可证

本项目基于 libcimbar 开发,遵循相应的开源许可证。

---

**提示**:为了获得最佳体验,请确保使用推荐的浏览器和设备配置。
21 changes: 21 additions & 0 deletions LICENSE
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
MIT License

Copyright (c) 2026 AirScan-QR (https://github.com/zxq1002/AirScan-QR)

Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
Loading