Skip to main content

python implementation of X2Cscope

Project description

pyX2Cscope Logo

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

  1. You can install the module using pip:
    pip install pyx2cscope
  2. 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.
  3. start with importing pyX2Cscope: import pyx2cscope
  4. Choose the communication interface from the interfaces' module. Currently, Only Serial is supported: CAN and LIN coming in near future:
from xc2scope import X2CScope
  1. 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)
  1. Replace the elf_file with the path to the ELF file of your project.
  2. Create a Variable object for the variable you want to monitor:
variable = x2cScope.get_variable('Variable_name')
  1. Replace 'Variable_name' with the name of the variable you want to monitor. You can create multiple variable objects as required.
  2. Once you have gone through these steps, you can use the get_value() function to retrieve the value of the variable:
variable.get_value() 
  1. To set the value for the respective variable set_value():
variable.set_value(value)

Scope Functionality

  1. 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)
  1. To remove channel: remove_scope_channel(variable: Variable):
x2cScope.remove_scope_channel(variable2)
  1. Up to 8 channels can be added.
  2. 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)
  1. 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)
  1. clear_trigger(): Clears and diable trigger
x2cscope.clear_trigger()
  1. 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)
  1. 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)
  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()
  1. This data now could be used according to the preference.

Getting Started with pyX2Cscope reference GUI

  1. pyX2Cscope-GUI is based on Serial interface.

  2. The Firmware of the microcontroller should have the X2Cscope library/Peripheral enabled.

  3. Select the COM Port, Baud Rate from the drop-down menus and the ELF file of the project, the microcontroller programmed with.

    COM-port

  4. Sample time can be changed during run time as well, by default its set to 500ms.

  5. Press on Connect

  6. 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:

  1. Fork the pyX2Cscope repository.
  2. Create a new branch for your changes.
  3. Make the necessary changes and commit them.
  4. Push your changes to your forked repository.
  5. Open a pull request on the main pyX2Cscope repository, describing your changes.

We appreciate your contribution!


Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

pyx2cscope-0.1.1.tar.gz (182.1 kB view details)

Uploaded Source

Built Distribution

pyx2cscope-0.1.1-py2.py3-none-any.whl (191.0 kB view details)

Uploaded Python 2 Python 3

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

Hashes for pyx2cscope-0.1.1.tar.gz
Algorithm Hash digest
SHA256 599717cc59de6d6c0605a2c41722e785403c2d6718660e96d3838c3bd4ed7935
MD5 df65c1418c4d40027d9880d00dfa0107
BLAKE2b-256 cab0406a8fba439444ff6efb71d0cab383c8d6fa0b09c7d6013bb0cebbe0ffee

See more details on using hashes here.

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

Hashes for pyx2cscope-0.1.1-py2.py3-none-any.whl
Algorithm Hash digest
SHA256 fb4d4527530907c97b9ca8760ce6cec6d22bb78aa94cd45ff82174c9cf2dec17
MD5 84629224c7bd7b1ed81fc1ae5f8e9e56
BLAKE2b-256 fc3857ab5f622e7499334028f6c4e6d9d9acb800a166df2e3262070bf530321e

See more details on using hashes here.

Provenance

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page