Skip to content

A cross-platform serial monitor/plotter written entirely in rust.

License

Notifications You must be signed in to change notification settings

hacknus/serial-monitor-rust

Repository files navigation

Serial Monitor

“”

A cross-platform serial monitor and plotter written entirely in rust, the GUI is written using egui.
Inspired by the serial monitor/plotter from the Arduino IDE, but both plotting and reading the traffic can be done simultaneously.

Installation:

Download pre-built executables

Binary bundles are available for Linux, macOS and Windows.

Running the apple silicon binary may result to the message "Serial Monitor is damaged and cannot be opened.", to get around this you first need to run:
xattr -rd com.apple.quarantine Serial\ Monitor.app

On Linux first install the following:

sudo apt-get install libxcb-render0-dev libxcb-shape0-dev libxcb-xfixes0-dev libxkbcommon-dev libssl-dev

Compile from source

The source code can be run using cargo run or bundled to a platform-executable using cargo bundle.
Currently cargo bundle only supports linux and macOS bundles see github issue. As a work-around we can use cargo wix to create a windows installer.

On Linux first install the following:

sudo apt-get install libxcb-render0-dev libxcb-shape0-dev libxcb-xfixes0-dev libxkbcommon-dev libssl-dev

After downloading
cargo install cargo-bundle or cargo install cargo-wix
run
cargo bundle or cargo wix to create platform-executable bundles.

It can be compiled and run on all platforms.

Features:

  • Plotting and printing of data simultaneously
  • Smart data parser, works with ", " or "," or ":" or ": "
  • History of the past sent commands
  • Low CPU Usage, lightweight
  • Clear history options
  • Data Window width (number of displayed datapoints in plot) is adjustable
  • Cross-platform, fully written in Rust
  • Ability to save text to file
  • Ability to save the plot
  • Allow to put in labels for the different data columns (instead of column 1, 2, ...)
  • Allow to choose Data-bits, Flow-Control, Parity and Stop-Bits for Serial Connection
  • Saves the configuration for the serial port after closing and reloads them automatically upon selection
  • Option to save raw data to file
  • Use keyboard shortcuts (ctrl-S to save data, ctrl-shift-S to save plot, ctrl-X to clear plot)
  • Automatic reconnect after device has been unplugged
  • Color-picker for curves
  • Open a CSV file and display data in plot
  • Allow to select (and copy) more than just the displayed raw traffic (also implement ctrl + A)
  • Smarter data parser
  • make serial print selectable and show corresponding datapoint in plot
  • COM-Port names on Windows (display manufacturer, name, pid or vid of device?)
  • current command entered is lost when navigating through the history
  • command history is currently unlimited (needs an upper limit to prevent huge memory usage)
  • data history is currently unlimited (needs an upper limit to prevent huge memory usage)
  • ...

Screenshot of the application on macOS

Tested on:

  • macOS 12 Monterey x86
  • macOS 13 Ventura x86
  • macOS 13 Ventura ARM
  • macOS 14 Sonoma ARM
  • Debian 12 (Testing) x86
  • Windows 10 x86
  • ...

One might have to delete the Cargo.lock file before compiling.