macOS 平台的轻量级串口调试工具
专为调试 STM32、Arduino 和其他嵌入式系统设计
- 自动检测串口 - 实时检测并列出可用串口
- 广泛的波特率支持 - 从 300 到 921600 波特
- 可配置参数 - 数据位(5-8)、校验位(无/奇/偶)、停止位(1/2)
- 流控制选项 - 硬件流控(RTS/CTS)、软件流控(XON/XOFF)、无流控
- ASCII 模式 - 人类可读的文本显示
- HEX 模式 - 十六进制数据视图
- 混合模式 - 同时显示 ASCII 和 HEX
- 时间戳 - 可选的毫秒级精度时间戳
- 颜色区分 - RX(绿色)和 TX(蓝色)消息清晰区分
- 文本输入 - 发送纯文本,自动添加换行
- HEX 输入 - 发送十六进制原始数据(如
01 02 03 04) - 自动滚动 - 自动滚动到最新消息
- 高效缓冲 - 优化的缓冲机制,支持按行和定时刷新
- 会话录制 - 将所有串口通信记录到文件
- 保留时间戳 - 日志中包含精确时间戳
- 便捷导出 - 保存为纯文本格式,便于分析
- 原生 macOS 设计 - 使用 SwiftUI 构建,完美融入 macOS
- 深色模式支持 - 自动适配系统外观设置
- 响应式布局 - 自适应各种窗口大小
- 专属应用图标 - 专业的串口主题图标
- macOS 13.0 (Ventura) 或更高版本
- Xcode 15.0 或更高版本
- 支持 Intel 与 Apple Silicon 芯片
- XcodeGen 用于生成项目
- 从 Releases 下载最新的
.dmg文件 - 拖动到应用程序文件夹
- 启动 SerialTerminal
# 克隆仓库
git clone https://github.com/BiKing567/SerialTerminal.git
cd SerialTerminal
# 生成 Xcode 项目
xcodegen
# 在 Xcode 中打开
open SerialTerminal.xcodeproj
# 编译运行(在 Xcode 中按 ⌘+R)- 连接设备 - 通过 USB 连接您的 STM32/Arduino
- 选择串口 - 从下拉菜单中选择串口
- 配置参数 - 设置波特率(常用 115200)
- 点击连接 - 点击绿色的"连接"按钮
- 开始通信 - 发送命令并查看响应!
┌─────────────────────────────────────────────────────────────────┐
│ [串口选择 ▼] [波特率 ▼] [连接/断开] [⚙️ 设置] │
└─────────────────────────────────────────────────────────────────┘
- 串口选择:显示所有检测到的串口,点击可刷新列表
- 波特率:从标准速率中选择(9600、115200 等)
- 连接/断开:切换按钮(绿色=连接,红色=断开)
- 设置:打开高级配置(数据位、校验位等)
┌─────────────────────────────────────────────────────────────────┐
│ [ASCII ▼] [✓] 时间戳 [✓] 自动滚动 [🗑️] │
├─────────────────────────────────────────────────────────────────┤
│ [12:34:56.789] [RX] 收到: Hello from STM32! │
│ [12:34:56.801] [TX] 发送: ping │
│ [12:34:56.823] [RX] 收到: pong │
│ │
└─────────────────────────────────────────────────────────────────┘
┌─────────────────────────────────────────────────────────────────┐
│ [文本|HEX] [__________________________] [📤 发送] [⏺️ 记录] │
└─────────────────────────────────────────────────────────────────┘
- 文本/HEX 切换:在文本和十六进制输入之间切换
- 输入框:输入消息内容或 HEX 数据
- 发送按钮:传输数据(也可按回车键)
- 记录按钮:开始/停止记录到文件
┌─────────────────────────────────────────────────────────────────┐
│ 数据位: [8 ▼] │
│ 校验位: [无 ▼] │
│ 停止位: [1 ▼] │
│ 流控制: [无 ▼] │
│ [确定] │
└─────────────────────────────────────────────────────────────────┘
SerialTerminal/
├── main.swift # 应用入口
├── AppDelegate.swift # 应用生命周期管理
├── ContentView.swift # SwiftUI 主界面
├── SerialPortManager.swift # 串口通信层
├── Assets.xcassets/ # 应用图标和资源
├── Info.plist # 应用配置
└── SerialTerminal.entitlements # 安全权限配置
使用 IOKit 进行底层串口通信:
- 通过 IOKit 枚举串口
- POSIX termios 配置
- 基于 DispatchSource 的异步读取
- 线程安全的数据缓冲管理
业务逻辑和状态管理:
- 消息缓冲和格式化
- 显示模式切换(ASCII/HEX/混合)
- 会话日志记录
- 数据传输处理
SwiftUI 界面组件:
- 连接工具栏
- 终端显示区域
- 消息输入面板
- 设置页面
# Debug 版本
xcodebuild -project SerialTerminal.xcodeproj -scheme SerialTerminal -configuration Debug build
# Release 版本
xcodebuild -project SerialTerminal.xcodeproj -scheme SerialTerminal -configuration Release build# 在 Xcode 中打开并运行测试
open SerialTerminal.xcodeproj
# 使用 ⌘+U 运行测试- Fork 仓库
- 创建功能分支
git checkout -b feature/your-feature-name
- 编写代码
- 运行测试
- 提交 Pull Request
详见 CONTRIBUTING.md。
- ✅ CH340/CH341(常见于 Arduino 克隆版)
- ✅ CP2102/CP2104(Silicon Labs)
- ✅ FTDI FT232R/FT230X
- ✅ PL2303(Prolific)
- ✅ STM32 内置 USB
- ✅ STM32 系列(所有型号)
- ✅ Arduino(Uno、Nano、Mega 等)
- ✅ ESP32/ESP8266
- ✅ 树莓派 Pico
- ✅ 任何带 UART 接口的设备
- 检查 USB 连接 - 尝试更换 USB 端口
- 安装驱动 - 部分设备需要安装驱动:
- 检查权限 - 确保已授予串口访问权限
- 验证波特率 - 确保与设备配置一致
- 检查流控制 - 如未使用请禁用
- 使用更短的线缆 - USB 延长线可能导致问题
- 编码错误 - 确保使用 UTF-8 编码
- 换行符缺失 - 检查设备是否发送
\r\n或\n - 缓冲延迟 - 可增加缓冲刷新间隔
本项目采用 Apache 2.0 - 详见 LICENSE 文件。
SerialTerminal 使用 Apache License 2.0 开源许可证,主要特点包括:
- ✅ 商业友好 - 可以自由使用、修改、分发,包括闭源商用
- ✅ 无需开源 - 修改后的代码不需要强制开源
- ✅ 保留版权声明 - 使用需保留原始版权声明和许可证副本
- 📋 无担保 - 按"原样"提供,不附带任何担保
简单来说:
- 你可以自由使用、修改、集成 SerialTerminal 到任何项目中
- 不需要开源你的修改或衍生代码
- 仅需保留版权声明即可
- SwiftUI - 现代化的声明式 UI 框架
- IOKit - macOS 平台底层串口访问
- XcodeGen - 出色的 Xcode 项目生成工具
- GitHub Issues:报告问题或请求功能
为嵌入式系统社区用心打造 ❤️