4个版本
0.2.1 | 2024年6月13日 |
---|---|
0.2.0 | 2024年6月5日 |
0.1.1 | 2024年2月23日 |
0.1.0 | 2024年2月23日 |
#158 in 硬件支持
197 每月下载量
145KB
3.5K SLoC
主要功能 • 范围与其他 • 安装 • 如何使用 • 项目目标
发送数据
使用 范围
,您可以在命令栏(底部)中输入消息,然后按 Enter
键将其通过串行端口发送。
以十六进制形式发送
您还可以以十六进制形式发送字节。为此,请输入 $
并以十六进制格式写入您的字节。消息可以使用空格和逗号作为分隔符(范围
将发送不包含空格和逗号的消息字节)。
发送命令
您可以使用命令栏发送命令。要发送命令,请输入 /
,然后在命令栏上方显示所有可用命令。继续输入命令,然后按 Enter
键发送命令。
命令从用户YAML文件中加载,在程序启动时传递(使用 -
标志)。以下是一个YAML文件的示例
hello: 'world!'
spaces: 'a big frase with spaces'
double_quotes: '"double"'
single_quotes: "'single'"
json: '{"cmd":1, "args":[true, "hello", 2.1]}'
json_again: '{"cmd":2, "args":"world"}'
编写历史记录
可以检索旧数据和发送的命令。您可以按 上箭头
和 下箭头
键在发送的数据和命令的历史记录中导航。
自动重连
范围
工具具有自动重连功能。当串行端口不可用时,范围
将继续尝试重新连接到串行端口,直到其再次可用。
彩色
范围
将命令栏着色以通知串行连接的状态:红色表示断开连接,绿色表示连接。除了状态之外,读取和写入的内容也会着色。读取的消息使用ANSI终端颜色标准着色。
发送到串行端口的始终有一个背景,以区分它和读取数据。ASCII表的可打印范围之外的字符以洋红色显示,并采用十六进制格式。一些字符按其表示形式打印,例如:\n
、\r
和 0
。
设置串行端口
在工具打开时,可以更改串行端口及其波特率。为此,请输入 !serial connect COM4 9600
将串行端口设置为 COM4
并波特率为 9600
。您还可以省略端口号以仅更改波特率(!serial connect 9600
)或省略波特率以仅更改端口(!serial connect COM4
)。如果您想释放串行端口,请输入 !serial disconnect
。
保存历史记录
要保存从开始以来捕获的所有消息(包括发送的消息),您可以按 Ctrl+s
。历史记录框会闪烁,并在历史记录上显示一条消息。文件名以 .txt
扩展名显示在历史记录框的顶部。在历史记录的右上角,显示捕获的所有消息的大小。
然而,如果您只想保存从现在开始捕获的消息,您将使用记录功能。按 Ctrl+r
,您将开始一个记录会话。在记录会话期间,历史记录块为黄色,并且 Scope
将存储从现在开始捕获的所有消息。要停止记录会话,您需要再次按 Ctrl+r
。右下角的指示器将显示记录会话的大小。每次开始一个新的记录会话时,都会创建一个新的文件名。开始会话和停止会话都会在历史记录框上打印一条消息,以指示何时发生。
消息时间戳
所有写入或读取的数据都在消息的左侧有一个灰色时间戳,格式如下:HH:MM:SS.ms
。
多平台
您可以在多个平台上使用 Scope
,例如:Linux、Windows 和 macOS[^1]。
[^1]: 尚未测试。
历史导航
您可以使用鼠标滚轮或按 PageUp
和 PageDown
在消息历史记录中导航。
插件
您可以使用插件扩展 Scope
的基本功能!插件是使用 lua
语言编写的脚本。要为 Scope
创建插件,您需要编写一个具有以下两个函数的 lua 脚本:serial_rx
和 user_command
。当在串行端口捕获新的数据时,会调用 serial_rx
函数。当您从命令栏调用您的插件时,会调用 user_command
函数,并将参数传递给此命令。下面的代码是一个插件,当接收到 AT\r\n
消息时,会回复 OK\r\n
,并且当用户在命令栏中键入 !echo hello
时,会发送 Hello, World\r\n
。
require "scope"
function serial_rx(msg)
msg_str = bytes2str(msg)
if msg_str ~= "AT\r\n" then
return
end
scope.println("Sending msg \"OK\" via serial tx...")
scope.serial_tx(str2bytes("OK\r\n"))
scope.println("Message sent!")
end
function user_command(arg_list)
if arg_list[1] ~= "hello" then
return
end
scope.println("Hello, World!\r\n")
end
要调用您的插件,您需要输入 !
,然后是插件名称和参数列表。在您的插件内部,可以进行许多操作以与 Scope
和串行端口交互,例如:连接到串行端口、从串行端口断开连接、向串行端口发送数据、在 Scope
文本视图中打印一些消息等。有关 Scope
插件开发的更多信息,请参阅插件开发者指南。
Scope 与其他产品对比
Scope
结合了多项功能。下表列出了这些功能
功能 | Scope(免费) | Docklight | Arduino | Tera Term | screen | esp-idf |
---|---|---|---|---|---|---|
发送数据 | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
以十六进制形式发送 | ✅ | ✅ | x | x | x | x |
发送命令 | ✅ | ✅ | x | x | x | x |
编写历史记录 | ✅ | ✅[^2] | x | x | x | x |
自动重连 | ✅ | ✅ | x | ✅ | x | x |
彩色 | ✅ | x | x | ✅ | ✅ | ✅ |
消息时间戳 | ✅ | ✅ | x | x | x | x |
显示不可打印字符 | ✅ | ✅ | x | x | x | x |
多平台 | ✅[^3] | Windows | ✅ | Windows | Linux | ✅ |
界面 | TUI | GUI | GUI | GUI | 终端 | 终端 |
价格 | 免费 | €69 | 免费 | 免费 | 免费 | 免费 |
[^2]: Docklight 有侧面板中的命令列表,因此不需要命令历史记录
[^3]: 尚未在 macOS 上进行测试
安装
您可以使用 cargo
安装 Scope
或在 发布页面 下载预构建的二进制文件
使用 cargo
cargo install scope-monitor
如何使用
安装完成后,输入 scope serial
,然后是串行端口和所需的波特率。例如,要在波特率 115200 bps
下打开 COM3
端口,请输入
scope serial COM3 115200
当底部的命令栏为绿色时,它开始从串行端口捕获消息,并允许发送消息。
要从 YAML 文件加载命令列表,请使用 -c <YOUR_COMMANDS>.yml
或 --cmd-file <YOUR_COMMANDS>.yml
,在 scope
和 serial
之间。例如,要加载 cmd.yml
文件,可以输入
scope -c cmd.yml serial COM3 115200
或
scope --cmd-file cmd.yml serial COM3 115200
项目目标
本项目有 5 个支柱,将指导该工具的开发
I. 直观使用: 工具的使用必须直观。这意味着可用性应遵循其他流行工具的常见行为。例如,历史导航(上箭头
和 下箭头
)遵循 Unix shell 和 Windows Powershell 中的 OS 终端的历史导航。
II. 紧凑性和正交性: 功能必须遵循 Unix 的 紧凑性和正交性 原则。
III. 以用户为中心的开发: 该工具的开发必须首先为用户提供价值,而不是取悦开发者。例如:用于扩展工具的脚本语言必须是成熟的编程语言,而不是创建新语言。另一个例子是优先考虑用户报告的严重错误,而不是推出新功能。
IV. 多平台: 所有版本必须在 Windows、Linux(zsh、shell 和 fish)和 macOS 上工作。
V. 可扩展性: 支持用户脚本以扩展基本功能。这些脚本称为插件。有关插件的更多信息,请参阅 插件开发者指南
路线图和后续版本可在GitHub项目中找到。
社区
如有新功能请求或报告错误,请自由地在GitHub上发布新的问题。
贡献
请查看贡献指南。
维护者
感谢
- Emilio Bottoni和José Gomes,感谢他们的想法推动了此工具的发展,感谢他们发现隐藏的错误以及良好的功能实现。
许可证
Scope在BSD v3许可证的条款下提供。
有关许可证详细信息,请参阅许可证。
依赖项
~17–48MB
~759K SLoC