The pyx2cscope Python package communicates with X2Cscope enabled firmwares running on microcontrollers. Focusing real time control applications like motor control and power conversion.
- It allows user to:
- Read - Write variables to the embedded target in runtime
- Record and Plot fast, continuous signals from the target firmware
- Implement Automated Unit Tests (TDD) and HIL tests for embedded development
- Record data in run-time for AI models
- Implement custom user interface, dashboards for embedded applications (QT, Tkinter, Web)
Detailed documentation is hosted at GitHub.io: https://x2cscope.github.io/pyx2cscope/
pyX2Cscope currently supports Python 3.10 to 3.14.
Create a virtual environment and install pyx2cscope using the following commands (Windows):
python -m venv .venv
.venv\Scripts\activate
pip install pyx2cscope
To execute Qt version, type:
pyx2cscope
To execute the Browser based version type:
pyx2cscope -w
from pyx2cscope.x2cscope import X2CScope
# Option 1: Default UART with Auto-detect COM port (recommended for single device)
x2c_scope = X2CScope(elf_file="path/to/firmware.elf")
# Option 2: Specify COM port explicitly
# x2c_scope = X2CScope(port="COM8", elf_file="path/to/firmware.elf")
# Or import variables after instantiation
# x2c_scope.import_variables(r"..\..\tests\data\qspin_foc_same54.elf")
# Collect some variables
speed_reference = x2c_scope.get_variable("motor.apiData.velocityReference")
speed_measured = x2c_scope.get_variable("motor.apiData.velocityMeasured")
# Read the value of the "motor.apiData.velocityMeasured" variable from the target
print(speed_measured.get_value())
# Write a new value to the "motor.apiData.velocityReference" variable on the target
speed_reference.set_value(1000)Check Examples directory in the pyX2Cscope project to see common uses of this library.
https://github.com/X2Cscope/pyx2cscope/tree/main/doc/development.md
