#串口 #串行 #监控 #插件 #Linux

app 范围监控器

一个具有用户可扩展功能的跨平台串行监控器

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 硬件支持

Download history 1/week @ 2024-05-27 127/week @ 2024-06-03 166/week @ 2024-06-10 4/week @ 2024-06-17

197 每月下载量

自定义许可

145KB
3.5K SLoC


Scope Banner
Build Status License BSD-3 Version info
范围 是一个具有用户可扩展功能的跨平台串行监控器。

主要功能范围与其他安装如何使用项目目标

发送数据

使用 范围,您可以在命令栏(底部)中输入消息,然后按 Enter 键将其通过串行端口发送。

Send data gif

以十六进制形式发送

您还可以以十六进制形式发送字节。为此,请输入 $ 并以十六进制格式写入您的字节。消息可以使用空格和逗号作为分隔符(范围 将发送不包含空格和逗号的消息字节)。

Send hex gif

发送命令

您可以使用命令栏发送命令。要发送命令,请输入 /,然后在命令栏上方显示所有可用命令。继续输入命令,然后按 Enter 键发送命令。

Send command gif

命令从用户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"}'

编写历史记录

可以检索旧数据和发送的命令。您可以按 上箭头下箭头 键在发送的数据和命令的历史记录中导航。

Command history

自动重连

范围 工具具有自动重连功能。当串行端口不可用时,范围 将继续尝试重新连接到串行端口,直到其再次可用。

Reconnect gif

彩色

范围 将命令栏着色以通知串行连接的状态:红色表示断开连接,绿色表示连接。除了状态之外,读取和写入的内容也会着色。读取的消息使用ANSI终端颜色标准着色。

Read ANSI color gif

发送到串行端口的始终有一个背景,以区分它和读取数据。ASCII表的可打印范围之外的字符以洋红色显示,并采用十六进制格式。一些字符按其表示形式打印,例如:\n\r0

Special character gif

设置串行端口

在工具打开时,可以更改串行端口及其波特率。为此,请输入 !serial connect COM4 9600 将串行端口设置为 COM4 并波特率为 9600。您还可以省略端口号以仅更改波特率(!serial connect 9600)或省略波特率以仅更改端口(!serial connect COM4)。如果您想释放串行端口,请输入 !serial disconnect

Setup serial port

保存历史记录

要保存从开始以来捕获的所有消息(包括发送的消息),您可以按 Ctrl+s。历史记录框会闪烁,并在历史记录上显示一条消息。文件名以 .txt 扩展名显示在历史记录框的顶部。在历史记录的右上角,显示捕获的所有消息的大小。

Save history

然而,如果您只想保存从现在开始捕获的消息,您将使用记录功能。按 Ctrl+r,您将开始一个记录会话。在记录会话期间,历史记录块为黄色,并且 Scope 将存储从现在开始捕获的所有消息。要停止记录会话,您需要再次按 Ctrl+r。右下角的指示器将显示记录会话的大小。每次开始一个新的记录会话时,都会创建一个新的文件名。开始会话和停止会话都会在历史记录框上打印一条消息,以指示何时发生。

Save record

消息时间戳

所有写入或读取的数据都在消息的左侧有一个灰色时间戳,格式如下:HH:MM:SS.ms

多平台

您可以在多个平台上使用 Scope,例如:Linux、Windows 和 macOS[^1]。

[^1]: 尚未测试。

历史导航

您可以使用鼠标滚轮或按 PageUpPageDown 在消息历史记录中导航。

插件

您可以使用插件扩展 Scope 的基本功能!插件是使用 lua 语言编写的脚本。要为 Scope 创建插件,您需要编写一个具有以下两个函数的 lua 脚本:serial_rxuser_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 插件开发的更多信息,请参阅插件开发者指南

Plugin usage

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,在 scopeserial 之间。例如,要加载 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 BottoniJosé Gomes,感谢他们的想法推动了此工具的发展,感谢他们发现隐藏的错误以及良好的功能实现。

许可证

Scope在BSD v3许可证的条款下提供。

有关许可证详细信息,请参阅许可证

依赖项

~17–48MB
~759K SLoC