python implementation of X2Cscope
Project description
pyX2Cscope
- pyX2Cscope is the Python implementation of the X2Cscope plugin from MPLABX.
- This will let the user use the functionality of X2Cscope even outside mplabx enviroment / Standalone.
- It allows user to:
- Automated Unit Tests (TDD) using pytest
- BDD(behaviour driven development), Framework: "Cucumber"
- Different user interface
- Data collection for machine learning and training models
- Run-Time data analysis
- Use of Real Time AI model
- HiL(Hardware in the loop) testing and tuning
Getting Started with Scripting
- You can install the module using pip:
pip install pyx2cscope
- Go to the
Examples
directory in the pyX2Cscope project to check out the available examples or create a new .py file according to your requirements. - start with importing pyX2Cscope:
import pyx2cscope
- Choose the communication interface from the interfaces' module. Currently, Only Serial is supported: CAN and LIN coming in near future:
from xc2scope import X2CScope
- Initiate the X2CScope and provide the desired COM port, by default baud rate is set to 115200. . If there's a need to change the baud rate, include the baud_rate parameter with your preferred baud rate, In the same way other setting could be made:
x2cScope = X2CScope(port="COM16", elf_file=elf_file)
- Replace the elf_file with the path to the ELF file of your project.
- Create a Variable object for the variable you want to monitor:
variable = x2cScope.get_variable('Variable_name')
- Replace 'Variable_name' with the name of the variable you want to monitor. You can create multiple variable objects as required.
- Once you have gone through these steps, you can use the get_value() function to retrieve the value of the variable:
variable.get_value()
- To set the value for the respective variable set_value():
variable.set_value(value)
Scope Functionality
- To use the scope functionality, add channel to the scope: add_scope_channel(variable: Variable) :
x2cScope.add_scope_channel(variable1)
x2cScope.add_scope_channel(variable2)
- To remove channel: remove_scope_channel(variable: Variable):
x2cScope.remove_scope_channel(variable2)
- Up to 8 channels can be added.
- To Set up Trigger, any available variable can be selected, by default works on no trigger configuration.
x2cscope.set_scope_trigger(variable: Variable, trigger_level: int, trigger_mode: int, trigger_delay: int, trigger_edge: int)
-
Trigger Parameters:
srcChannel: TriggerChannel (variable)
Level: trigger_level
Trigger_mode: 1 for triggered, 0 for Auto (No trigger)
Trigger_delay = Value > 0 Pre-trigger, Value < 0 Post trigger
Trigger_Edge: Rising (1) or Falling (0)
Example
x2cScope.set_scope_trigger(variable3, trigger_level=500, trigger_mode=1, trigger_delay=50, trigger_edge=1)
-
clear_trigger(): Clears and diable trigger
x2cscope.clear_trigger()
-
set_sample_time(sample_time: int): This paramater defines a pre-scaler when the scope is in the sampling mode. This can be used to extend total sampling time at cost of resolution. 0 = every sample, 1 = every 2nd sample, 2 = every 3rd sample .....
x2cScope.set_sample_time(2)
-
is_scope_data_ready(self) -> bool: Returns Scope sampling state. Returns: true if sampling has completed, false if it’s yet in progress.
while not x2cScope.is_scope_data_ready():
time.sleep(0.1)
-
get_scope_channel_data(valid_data=False) -> Dict[str, List[Number]]: Once sampling is completed, this function could be used to get the sampled data.
data = x2cScope.get_scope_channel_data()
-
This data now could be used according to the preference.
Getting Started with pyX2Cscope reference GUI
-
pyX2Cscope-GUI is based on Serial interface.
-
The Firmware of the microcontroller should have the X2Cscope library/Peripheral enabled.
-
Select the COM Port, Baud Rate from the drop-down menus and the ELF file of the project, the microcontroller programmed with.
-
Sample time can be changed during run time as well, by default its set to 500ms.
-
Press on Connect
-
Once the connection between pyX2Cscope and Microcontroller takes place, the buttons will be enabled.
Contribute
If you discover a bug or have an idea for an improvement, we encourage you to contribute! You can do so by following these steps:
- Fork the pyX2Cscope repository.
- Create a new branch for your changes.
- Make the necessary changes and commit them.
- Push your changes to your forked repository.
- Open a pull request on the main pyX2Cscope repository, describing your changes.
We appreciate your contribution!
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
File details
Details for the file pyx2cscope-0.1.1.tar.gz
.
File metadata
- Download URL: pyx2cscope-0.1.1.tar.gz
- Upload date:
- Size: 182.1 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/1.7.1 CPython/3.12.1 Windows/11
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 599717cc59de6d6c0605a2c41722e785403c2d6718660e96d3838c3bd4ed7935 |
|
MD5 | df65c1418c4d40027d9880d00dfa0107 |
|
BLAKE2b-256 | cab0406a8fba439444ff6efb71d0cab383c8d6fa0b09c7d6013bb0cebbe0ffee |
Provenance
File details
Details for the file pyx2cscope-0.1.1-py2.py3-none-any.whl
.
File metadata
- Download URL: pyx2cscope-0.1.1-py2.py3-none-any.whl
- Upload date:
- Size: 191.0 kB
- Tags: Python 2, Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/1.7.1 CPython/3.12.1 Windows/11
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | fb4d4527530907c97b9ca8760ce6cec6d22bb78aa94cd45ff82174c9cf2dec17 |
|
MD5 | 84629224c7bd7b1ed81fc1ae5f8e9e56 |
|
BLAKE2b-256 | fc3857ab5f622e7499334028f6c4e6d9d9acb800a166df2e3262070bf530321e |