Driver Programming: Difference between revisions

From SweepMe! Wiki
Jump to navigation Jump to search
No edit summary
Line 53: Line 53:
{{syntaxhighlight|lang=python|code=  
{{syntaxhighlight|lang=python|code=  
GUIparameter = {
GUIparameter = {
                 "SweepMode" : ["Current [A]", Voltage [V]"],  # define a list  
                 "SweepMode" : ["Current [A]", "Voltage [V]"],  # define a list  
                 "Parameter" : "offset = 0.0, axis = 2" ,
                 "Parameter" : "offset = 0.0, axis = 2" ,
               }
               }

Revision as of 21:32, 4 February 2018

A Device Class is a main.py file in which a python class-Object is inherited from a parent class called EmptyDeviceClass.

from EmptyDeviceClass import EmptyDevice  # Loading the EmptyDevice Class

class Device(EmptyDevice):            # Creating a new Device Class by inheriting from EmptyDevice
    def __init__(self):               # The python class object need to be initialized
       EmptyDevice.__init__(self)     # Finally, the initialization of EmptyDevice has to be done

This is a minimal working example to create a Device Class.


Getting GUI parameter

If you need to know what the user configuration of the Measurement class GUI, insert the following function:

def get_GUIparameter(parameter):
    print parameter

The dictionary parameter is used to hand over all GUI settings to the Device Class. The print command can be used to see the content and which keys are accessible. These keys of the dictionary can vary between each Measurement Class.

In order to load a single parameter, for example the Sweep mode, use:

self.sweepmode = self.parameter["SweepMode"]

Input from a parameter text line is automatically splitted at each comma and separated regarding the equal sign:

self.offset = float(self.parameter["Parameter"]["offset"])
self.axis   = int(self.parameter["Parameter"]["axis"])

Do not forget to change the type from string to whatever you need by using int() or float(), etc.


Setting GUI parameter

If you like to provide options displayed in the Drop-Down Comboboxes or a parameter text line, insert the following function:

def set_GUIparameter(parameter):
    GUIparameter = {}
    return GUIparameter

If you like to change something modify the GUIparameter dictionary which you have to return:

GUIparameter = {
                "SweepMode" : ["Current [A]", "Voltage [V]"],  # define a list 
                "Parameter" : "offset = 0.0, axis = 2" ,
               }

Multichannel support

Some measurement equipment has two channels but only one communications port, e.g. some Source-Measuring-Units or Paramter Analyzers have multiple channels to independently source voltages or currents, but everything is controlled via one port.

Of course, one could implement a Device Class for each channel of the device but in case of changes multiple files have to be revised. In order to unify the device handling, you can define multiple channels in the __init__ function of your Device Class by using:

self.multichannel = ["CH1", "CH2", "CH3", "CH4"]

In that case, the use will see four Device Classes in the GUI of the Measurment Class with the string defined above at the end.

To figure out which channel is chosen by the user, use:

def get_GUIparameter(parameter):
    self.device = self.parameter["Device"]
    self.channel = int(self.device[-1])

The above example will first read out the name of the chosen Device Class. Assuming that the last character of the string is the channel, the channel number can be defined as an integer value. Of course, you can modify the above example to your needs.