https://github.com/hacknus/serial-monitor-rust
A cross-platform serial monitor/plotter written entirely in rust.
https://github.com/hacknus/serial-monitor-rust
egui rust serial serial-communication serial-monitor serial-plotter
Last synced: 30 days ago
JSON representation
A cross-platform serial monitor/plotter written entirely in rust.
- Host: GitHub
- URL: https://github.com/hacknus/serial-monitor-rust
- Owner: hacknus
- License: gpl-3.0
- Created: 2022-07-31T11:41:35.000Z (over 2 years ago)
- Default Branch: main
- Last Pushed: 2025-03-19T06:46:07.000Z (about 1 month ago)
- Last Synced: 2025-03-19T07:35:43.658Z (about 1 month ago)
- Topics: egui, rust, serial, serial-communication, serial-monitor, serial-plotter
- Language: Rust
- Homepage:
- Size: 7.98 MB
- Stars: 161
- Watchers: 6
- Forks: 17
- Open Issues: 10
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- License: LICENSE
Awesome Lists containing this project
- awesome-rust-list - hacknus/serial-monitor-rust - monitor-rust?style=social"/> : A cross-plattform serial monitor/plotter written entirely in rust. (Sensor and Communication Protocol)
- awesome-rust-list - hacknus/serial-monitor-rust - monitor-rust?style=social"/> : A cross-plattform serial monitor/plotter written entirely in rust. (Sensor and Communication Protocol)
README
# Serial Monitor
A cross-platform serial monitor and plotter written entirely in rust, the GUI is written
using [egui](https://github.com/emilk/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](https://github.com/hacknus/serial-monitor-rust/releases) are available for Linux, macOS and Windows.
Running the apple silicon binary (serial-monitor-aarch64-apple-darwin.app) 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:
```sh
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](https://github.com/burtonageo/cargo-bundle) only supports linux and macOS
bundles [see github issue](https://github.com/burtonageo/cargo-bundle/issues/77).
As a work-around we can use [cargo wix](https://github.com/volks73/cargo-wix) to create a windows installer.#### Ubuntu
```sh
sudo apt-get install libxcb-render0-dev libxcb-shape0-dev libxcb-xfixes0-dev libxkbcommon-dev libssl-dev
cargo install cargo-bundle
cargo bundle
```
#### Debian```sh
sudo apt-get install libxcb-render0-dev libxcb-shape0-dev libxcb-xfixes0-dev libxkbcommon-dev libssl-dev libudev-dev
cargo install cargo-bundle
cargo bundle
```#### macOS
```sh
cargo install cargo-bundle
cargo bundle
```#### Windows
```sh
cargo install cargo-wix
cargo wix
```## Features:
- [X] Plotting and printing of data simultaneously
- [X] Smart data parser, works with ", " or "," or ":" or ": "
- [X] History of the past sent commands
- [X] Low CPU Usage, lightweight
- [X] Clear history options
- [X] Data Window width (number of displayed datapoints in plot) is adjustable
- [X] Cross-platform, fully written in Rust
- [X] Ability to save text to file
- [X] Ability to save the plot
- [X] Allow to put in labels for the different data columns (instead of column 1, 2, ...)
- [X] Allow to choose Data-bits, Flow-Control, Parity and Stop-Bits for Serial Connection
- [X] Saves the configuration for the serial port after closing and reloads them automatically upon selection
- [X] Option to save raw data to file
- [X] Use keyboard shortcuts (ctrl-S to save data, ctrl-shift-S to save plot, ctrl-X to clear plot)
- [X] Automatic reconnect after device has been unplugged
- [X] Color-picker for curves
- [X] 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)
- [ ] ...
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.