AirTerminal 1.3 更新:日志记录、改用 SwiftTerm

AirTerminal 是一个蓝牙终端和 XMODEM 文件传输工具。具体功能可参考我过去的文章

在这个春节,我为 AirTerminal 增加了日志记录功能,同时改用 SwiftTerm 实现终端模拟器。新版本可在 App Store 中下载

日志记录

大部分 SSH/Telnet 工具都具备日志记录功能,能够将终端输出的内容保存在文本文件中。

对于调试嵌入式设备等应用场景,如果设备通过串口输出大量信息,同时又不支持通过 lessmore 这样的工具进行翻页,就可以使用日志记录功能,保存输出内容,方便后续查阅。

启用日志记录功能,只需要在终端中点击右上角的按钮,选择 Enable Logging 即可:

AirTerminal 的日志记录功能

记录下的日志文件,可以在 iOS/iPad OS 的「文件」App 中查看。也可以将 iPhone/iPad 连接电脑,通过 iTunes 或 Finder 导出:

在 Files App 中查看日志

目前 AirTerminal 的日志记录功能比较基础,只是将蓝牙接收到的数据原封不动地记录到文件。如果在 AirTerminal 中使用 vim、tmux 等工具,则记录的日志不方便用户阅读。这部分功能需要进一步优化。

日志记录的功能建议,是由 Twitter 用户 @AllAboutJake 提出的,非常感谢这位推友。如果读者对 AirTerminal 还有其他建议,也欢迎与我联系。

改用 SwiftTerm

AirTerminal 原先基于 WKWebViewxterm.js,通过 Web 的方式实现终端模拟器。简单说,就是 AirTerminal 调用浏览器,在浏览器中加载网页,来显示终端。终端的大部分功能都是在网页中实现的。

通过这种方式实现终端,在开发与调试的过程中,遇到了不少 UI 细节的问题,为了规避这些问题,代码中增加了不少处理。同时,还需要使用 JavaScriptCore,实现 Web 页面与 App 之间的交互。整体上代码不是很优雅。

最近我在使用 Secure ShellFish 时,发现这款 App 使用了 SwiftTerm。SwiftTerm 是用 Swift 实现的终端模拟器,专门为 iOS 和 macOS 打造。使用 SwiftTerm,能让 AirTerminal 的代码简洁不少,同时后续可以基于 SwiftTerm 实现更多功能。所以,在 AirTermnal 1.3 中,我使用 SwiftTerm 替换了 xterm.js,来实现终端模拟器。

后续计划

由于工作等各方面的的原因,在 2022 年,我的空闲时间不是很多,AirTerminal 也主要保持在维护状态。如果还有时间的话,可能会尝试为 AirTerminal 优化 UI、增加多 Tab 和多窗口支持、完善 CJK 支持等……

“AirTerminal 1.3 更新:日志记录、改用 SwiftTerm”的13个回复

  1. 一直在你你这款产品,也在推荐给淘宝卖ble串口设备推荐你的产品,就是希望提高你产品知名度,你在更新1.3版本后就升级了,现在有个bug,命令后显示的信息,不能触摸上下滚动了,这样信息多了就错过了,希望改进一下,这么好用的产品买断价格太低了

  2. 你好,我也想做一个这样的软件,初次接触Swift,SwiftTerm怎么接入SwiftUI里呢。

    1. AirTerminal 没有用到 SwiftUI。
      SwiftTerm 和 SwiftUI 一起使用,可以参考一下这个文档:https://developer.apple.com/tutorials/swiftui/interfacing-with-uikit

  3. 提一个以后版本的需求,查询完的命令,能添加个选择复制粘贴功能最好,没有也不影响使用

  4. 一直在使用Air Terminal配合水木行BT578 v2蓝牙串口调试器在iPad上做交换机调试。非常好用的工具,可以说是蓝牙传口连接console口最好用的工具。但在使用中一直有以下几个痛点不知道开发者是否可以帮忙改进:1、central mode模式下选择设备uuid的时候,是否可以增加一个筛选有设备名的筛选模式,用于只显示有设备名的设备。因为机房有很多AP有隐性蓝牙模式,会搜出很多unknown的设备,把我们需要连的设备大量淹没在里面,不容易找到;2、升级iPad OS 16后,添加设备uuid时会一直搜索周边蓝牙,特别是周围设备量很大的时候,会闪退

    1. OK,后续版本我修复一下闪退功能,并试着增加一下设备名搜索和过滤功能。

  5. 您好,airterminal是一个很好用的串口工具,后续能否增加修改波特率的选项呢?以便适配更多设备的调试工作。谢谢了。

    1. 波特率的修改一般是通过发送 AT 指令到 BLE 串口模块实现的,不同的模块,用的指令也不一样。感觉没法简单适配后支持所有模块。
      不过后面可以考虑加上命令片段的功能,能够自定义并快速发送常用命令。

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注

退出移动版