7 个版本

0.0.7 2021 年 1 月 6 日
0.0.6 2021 年 1 月 6 日
0.0.5 2020 年 5 月 7 日
0.0.4 2020 年 4 月 29 日

命令行工具 中排名 #1652

每月下载 40

MIT 许可证

34KB
584

serial-monitor

适用于 USB 串行设备的串行监视器,使用 Rust 编写。

serial-monitor 是一个命令行程序,可以将您的计算机连接到 USB 串行设备,并允许您与其交互。已在 Mac OSX、Linux 和 Windows 上进行测试。

您可以使用 --list 选项显示所有检测到的 USB 串行设备,并可以使用 --vid--pid--port--serial--manufacturer--product 选项来筛选您的列表。

serial-monitor 将打开第一个满足筛选条件的 USB 串行端口。

连接后,您可以使用 Control-X(如果使用 -y 选项启动,则为 Control-Y)退出 serial-monitor 并返回到您的提示符。

安装

安装 rust。推荐的方式是使用 rustup

安装 rust 后,您可以直接使用以下命令从 crates.io 安装:

cargo install serial-monitor

这将把 serial-monitor 安装到 ~/.cargo/bin

如果您想从源代码本地构建和安装,则克隆以下 仓库

git clone https://github.com/dhylands/serial-monitor.git
cd serial-monitor

然后您可以使用以下命令构建和安装 serial-monitor

cargo install --path .

这将构建 serial-monitor 并将其安装到 ~/.cargo/bin

用法

$ serial-monitor --help
serial-monitor 0.0.5

USAGE:
    serial-monitor.exe [FLAGS] [OPTIONS]

FLAGS:
    -y               Exit using Control-Y rather than Control-X
    -d, --debug      Turn on debugging
    -e, --echo
    -f, --find       Like list, but only prints the name of the port that was found. This is 
                     useful for using from scripts or makefiles
    -h, --help       Prints help information
    -l, --list       List USB serial devices which are currently connected
    -V, --version    Prints version information
    -v, --verbose    Turn on verbose messages

OPTIONS:
    -b, --baud <baud>                    Baud rate to use [default: 115200]
        --databits <databits>            Data bits (5, 6, 7, 8) [default: 8]
        --enter <enter>                  Enter character to send (cr, lf, crlf) [default: cr]
        --flow <flow>                    Flow control (none, software, hardware) [default: none]
        --index <index>                  Return the index'th result
    -m, --manufacturer <manufacturer>    Filter based on manufacturer name
        --parity <parity>                Parity checking (none, odd, even) [default: none]
        --pid <pid>                      Filter based on Product ID (PID)
    -p, --port <port>                    Filter based on name of port
        --product <product>              Filter based on product name
    -s, --serial <serial>                Filter based on serial number
        --stopbits <stopbits>            Stop bits (1, 2) [default: 1]
        --vid <vid>                      Filter based on Vendor ID (VID)

--list(或 -l)选项将列出所有连接的 USB 串行适配器,例如

$ serial-monitor --list
USB Serial Device f055:9800 with manufacturer 'MicroPython' serial '336F338F3433' product 'Pyboard Virtual Comm Port in FS Mode' found @/dev/cu.usbmodem336F338F34332
USB Serial Device 0403:6001 with manufacturer 'FTDI' serial 'A700e6Lr' product 'FT232R USB UART' found @/dev/cu.usbserial-A700e6Lr

监视串行端口

要连接到MicroPython板(假设上述列表显示),您可以尝试以下操作: serial-monitor -m Micro 或可能是 serial-monitor --vid f055。您可以通过结合使用 --list 选项来尝试过滤选项,该选项将仅显示符合过滤标准的USB串行适配器。

连接后,您应该会看到以下内容

Connected to /dev/cu.usbmodem336F338F34332
Press Control-X to exit
MicroPython v1.11-47-g1a51fc9dd on 2019-06-18; PYBv1.1 with STM32F405RG
Type "help()" for more information.
>>> 

要退出 serial-monitor,请使用Ctrl-X(或如果您是使用 -y 选项开始的,则使用Ctrl-Y)。使用Ctrl-X允许将Ctrl-C和Ctrl-D等字符传递到串行端口上的设备。

端口过滤

您可以使用 --vid--pid--port--serial--manufacturer--product 选项来过滤串行端口的选项。所有这些选项都允许使用 *? 通配符。请注意,您可能需要引号来防止shell展开。 * 表示匹配0个或多个字符,而 ? 表示匹配一个字符。如果您不指定任何通配符,则假定字符串开头和结尾有一个 *。因此,--product FS 的行为相当于您输入了 --product '*FS*'

使用 --index 选项可以返回第index个结果。这对于返回多个具有相同属性串行端口的设备(如Black Magic Probe)非常有用。

在脚本中查找端口

--find 选项的行为与 --list 命令非常相似,但它只显示找到的第一个端口的名称。

例如,serial-monitor --list 可能会显示

USB Serial Device 1d50:6018 with manufacturer 'Black Sphere Technologies' serial '7ABA4DC1' product 'Black Magic Probe' found @/dev/cu.usbmodem7ABA4DC11
USB Serial Device 1d50:6018 with manufacturer 'Black Sphere Technologies' serial '7ABA4DC1' product 'Black Magic Probe' found @/dev/cu.usbmodem7ABA4DC13

命令 serial-monitor --find --product 'Black Magic Probe' --index 0 将显示

/dev/cu.usbmodem7ABA4DC11

这在脚本中非常有用

GDB_PORT = $(serial-monitor --find --product 'Black Magic Probe' --index 0)
arm-none-eabi-gdb -ex 'target extended-remote ${GDB_PORT}' -x gdbinit myprogram.elf

在Mac OS上支持Home/End键

在常规的Mac键盘上,Fn-Left键生成ESC [ H(对应Home键)和Fn-Right键生成ESC [ F(对应End键)。由于某种原因,按下外部键盘上的Home和End键被映射为ESC O HESC O F,而当这些键被按下时,crossterm没有报告任何事件。如果你进入终端->首选项,选择你的配置文件,然后选择键盘选项卡,你可以将Home从ESC O H更改为ESC [ H,将End从ESC O F更改为ESC [ F,然后Home和End键将通过crossterm正确报告。下面是键盘选项卡中Home和End键的图片

Home/End

这还有一个很好的副作用,使Mac终端窗口中的bash也能正确地使用Home/End键。

依赖项

~12MB
~201K SLoC