How-To#

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()