https://github.com/arif-rachmat/powershell-wpf-serialmonplot
A modern, WPF-based Serial Port Monitor and Real-time Data Plotter Powershell script
https://github.com/arif-rachmat/powershell-wpf-serialmonplot
data-visualization powershell powershell-script serial-communication windows wpf
Last synced: about 2 months ago
JSON representation
A modern, WPF-based Serial Port Monitor and Real-time Data Plotter Powershell script
- Host: GitHub
- URL: https://github.com/arif-rachmat/powershell-wpf-serialmonplot
- Owner: Arif-Rachmat
- License: mit
- Created: 2025-09-13T17:01:48.000Z (9 months ago)
- Default Branch: main
- Last Pushed: 2025-11-14T13:30:20.000Z (7 months ago)
- Last Synced: 2025-11-14T14:24:00.362Z (7 months ago)
- Topics: data-visualization, powershell, powershell-script, serial-communication, windows, wpf
- Language: PowerShell
- Homepage:
- Size: 31.3 KB
- Stars: 0
- Watchers: 0
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# WPF Serial Monitor & Plotter
A modern, standalone serial port monitor and real-time data plotter built with PowerShell and WPF. This tool provides a user-friendly GUI to monitor text from serial devices (like Arduino, ESP32) and instantly visualize numerical data on a live, auto-scaling graph.
The main interface showing the Serial Monitor and Plotter tabs.
## Features
- **Responsive UI**: Built with WPF to be fast and non-blocking.
- **Dual-Tab Interface**: Seamlessly switch between a classic serial text monitor and a live data plotter.
- **Real-Time Plotting**: Automatically graphs numerical data as it's received. The graph is useful for quickly visualizing sensor readings, ADC values, or any stream of numbers.
- **Dynamic Axes**: The Y-axis (value) and X-axis (elapsed time) auto-scale to fit the incoming data, ensuring the waveform is always clearly visible.
- **Live Typing Mode**: An interactive mode that sends each character to the device the instant it is typed.
- **Configurable Sending**: Send messages with selectable line endings (NL, CR, NL & CR, or none).
- **Timestamping**: Prepend timestamps (absolute or relative) to each incoming line for easy debugging and logging.
- **Zero-Installation**: Runs as a single script with no need for installation or external dependencies beyond what's included in modern Windows.
## Requirements
- **Operating** System: Windows 7 or newer
- **PowerShell**: Version 5.1 or higher (included by default in Windows 10/11)
- **.NET Framework**: Version 4.5 or newer (included by default in modern Windows versions)
## Quick Start: Using WebRequest
No installation is needed. You can run this application directly from your PowerShell terminal.
Open PowerShell and run the following command:
```powershell
irm bit.ly/SerialMonPlots | iex
```
This will download the script and execute it in memory. The GUI window will appear after a few moments.
## How to Use
1. **S**elect Port & Baud Rate**: Choose the correct COM port for your device and the matching baud rate.
2. **Connect**: Click the "Connect" button. The application will start listening for data.
3. **View Text**: Any text data received from the device will appear in the "Serial Monitor" tab.
4. **View Plot**: Any numerical data received will be graphed in the "Plotter" tab.
- The plotter expects one number per line. For example, an Arduino sending `Serial.println(analogRead(A0));` will work perfectly
5. **Send Data**:
- **Standard Mode**: Type a message in the text box, select a line ending, and click "Send" or press Enter.
- **Live Typing Mode**: Check the "Live Typing" checkbox. Each character you type will be sent instantly.
## License
This project is licensed under the MIT License. See the [LICENSE](LICENSE) file for details.