Skip to content

TopHarp/cw_runner

Repository files navigation

CW Runner - 微信小程序

CW Runner 是一款用于等幅电报(CW, Continuous Wave)模拟练习的微信小程序。用户可通过虚拟自动电键(Paddle)输入莫尔斯电码,上传至云端与他人进行异步练习。

核心特性

  • 虚拟自动键(Paddle):双桨设计,左桨发"点"(dit),右桨发"划"(dah),按住连续发送,松手即停,内置 iambic 模式。
  • 伪联网异步练习:用户上传 CW 电码文本至云端,他人可随时点击播放,本地 Web Audio 合成 600Hz 正弦波。
  • 完全匿名:云端列表仅展示 CW 文本项,不展示发送者身份,避免 UGC 内容审核风险。
  • 实时时序显示:屏幕上半区实时显示当前输入的原始时序文本。

技术栈

  • 前端:微信小程序原生框架
  • 音频:Web Audio API(本地合成 600Hz 正弦波)
  • 后端:微信云开发(云数据库 + 云函数)

快速开始

# 使用微信开发者工具打开本项目
# 填入你的小程序 AppID,开启云开发

项目结构

.
├── miniprogram/          # 小程序前端代码
│   ├── pages/
│   │   ├── index/        # 首页(电键输入 + 云端列表)
│   │   └── play/         # 播放页(可选,或集成在首页)
│   ├── utils/
│   │   ├── cw.js         # CW 时序解析与音频合成
│   │   └── cloud.js      # 云开发封装
│   └── app.js
├── cloudfunctions/       # 云函数
│   ├── uploadCW/         # 上传 CW 文本
│   └── getCWList/        # 获取云端列表
├── docs/
│   └── DESIGN.md         # 详细设计文档
└── README.md

时序规范

操作 行为 时序记录
点下左桨 发点,若按住则自动连续发点 追加 .
点下右桨 发划,若按住则自动连续发划 追加 -
左右同时按 优先后发(iambic 模式) 按实际输出记录
松手后 > 3 点长 字母间隔 追加 /
松手后 > 7 点长 单词间隔 追加 |
  • 点长 = 60ms
  • 划长 = 180ms(3×点长)
  • 点划间隔 = 60ms
  • 字母间隔 = 180ms(3×点长)
  • 单词间隔 = 420ms(7×点长)

播放端解析

遍历 code 字符串:

  • . → 播放 60ms 音 + 60ms 静音
  • - → 播放 180ms 音 + 60ms 静音
  • / → 追加 120ms 静音(总间隔 180ms)
  • \| → 追加 360ms 静音(总间隔 420ms)

数据格式

{
  "code": "-.-./--.-",
  "wpm": 20,
  "timestamp": 1713862800,
  "sender": "openid_xxx"
}

License

MIT

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors