A collection of Python tools for real-time plotting and data visualization from serial devices.
The project requires the following Python packages (specified in requirements.txt):
pyserial==3.5- Serial communication librarymatplotlib==3.3.2- Plotting and visualization librarynumpy==1.21.3- Numerical computing library
- Python 3.7 or higher
- pip (Python package installer)
git clone <repository-url>
cd psyonic-plotting-toolsOr download and extract the ZIP file to your desired location.
# Install all required packages
pip install -r requirements.txtpip install pyserial==3.5
pip install matplotlib==3.3.2
pip install numpy==1.21.3# Create a virtual environment
python -m venv psyonic_env
# Activate the virtual environment
# On Windows:
psyonic_env\Scripts\activate
# On Linux/macOS:
source psyonic_env/bin/activate
# Install requirements
pip install -r requirements.txtTest that all packages are installed correctly:
python -c "import serial; print(f'PySerial version: {serial.__version__}')"
python -c "import matplotlib; print(f'Matplotlib version: {matplotlib.__version__}')"
python -c "import numpy; print(f'NumPy version: {numpy.__version__}')"Main plotting script for real-time data visualization from serial devices.
python plot_lines.py [options]-b, --baud- Baud rate (default: 115200)-n, --num_lines- Number of data lines to plot (default: 1)-w, --width- Buffer width for plotting (default: 100)-t, --timeout- Serial timeout in milliseconds (default: 1000)--ymin- Minimum Y-axis value--ymax- Maximum Y-axis value--scaler- Data scaling preset (none, cal, peu, fsr, aenc)--passfail- Enable pass/fail message checking
# Basic calibration plot
python plot_lines.py -b 230400 -n 4 -w 50 -t 2000 --ymin -183.84 --ymax 183.84 --scaler cal --passfail
# Simple plotting with default settings
python plot_lines.py -b 115200 -n 2
# Custom scaling and limits
python plot_lines.py -b 9600 -n 1 --ymin 0 --ymax 100 --scaler noneUtility module for matplotlib-based plotting functions (used by plot_lines.py).
Located in scripts/linux/:
run_calibration_plot.sh- Runs the calibration plot with predefined parametersrun_fsr_plot.sh- Runs FSR (Force Sensing Resistor) plottingrun_peu_plot.sh- Runs PEU plottingrun_aenc_plot.sh- Runs AENC plottinginstall.sh- Installation script for dependencies
Located in scripts/windows/:
run_calibration_plot.bat- Windows version of calibration plotrun_fsr_plot.bat- Windows version of FSR plottingrun_peu_plot.bat- Windows version of PEU plottingrun_aenc_plot.bat- Windows version of AENC plottinginstall.bat- Windows installation script
# Make scripts executable
chmod +x scripts/linux/*.sh
# Run calibration plot
./scripts/linux/run_calibration_plot.sh# Run calibration plot
scripts\windows\run_calibration_plot.bat# Run with Python directly
python plot_lines.py -b 230400 -n 4 -w 50 -t 2000 --ymin -183.84 --ymax 183.84 --scaler cal --passfail- USB-to-Serial device or built-in serial port
- Compatible hardware device sending data over serial
- Proper serial port permissions (Linux: add user to dialout group)
# Add user to dialout group for serial port access
sudo usermod -a -G dialout $USER
# Log out and back in, or run:
newgrp dialout-
Import Error: No module named 'serial'
pip install pyserial==3.5
-
Import Error: No module named 'matplotlib'
pip install matplotlib==3.3.2
-
Serial Port Permission Denied (Linux)
sudo usermod -a -G dialout $USER # Log out and back in
-
No Serial Port Found
- Check device connections
- Verify correct port name (Linux:
/dev/ttyUSB0, Windows:COM1) - Ensure device drivers are installed
-
Matplotlib Backend Issues
# Set non-interactive backend for headless systems export MPLBACKEND=Agg
If you encounter version conflicts:
# Upgrade pip first
pip install --upgrade pip
# Install with --force-reinstall if needed
pip install --force-reinstall -r requirements.txt# Create fresh virtual environment
python -m venv fresh_env
source fresh_env/bin/activate # Linux/macOS
# or
fresh_env\Scripts\activate # Windows
# Install requirements
pip install -r requirements.txt-
Install the new package:
pip install new_package
-
Update requirements.txt:
pip freeze > requirements.txt -
Or manually add to requirements.txt:
new_package==1.2.3
Test the installation:
# Test imports
python -c "import serial, matplotlib, numpy; print('All packages imported successfully')"
# Test plotting (no hardware required)
python plot_lines.py --help[Add your license information here]
For issues and questions:
- Check the troubleshooting section above
- Review the command line help:
python plot_lines.py --help - Ensure all dependencies are installed correctly