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

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

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

日志记录

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

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

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

AirTerminal 截图,可以选择 Enable Logging 打开日志功能
AirTerminal 的日志记录功能

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

在 iOS Files App 中查看 AirTerminal 产生的日志
在 Files App 中查看日志

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

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

改用 SwiftTerm

AirTerminal 原先基于 WKWebView 和 xterm.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 支持等……

13 条评论

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

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

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

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

  4. 复制粘贴是支持,之前直接按住屏幕以为出呢,原来是双击屏幕

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

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

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

发表回复

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