Package: easy-scpi
Easy SCPIA simple and robust library making communication withSCPI(Standard Control of Programmbale Instruments) instruments easy. After creating an instrument object that connects to an actual instrument, commands are sent to the instrument using a property-like format. This class is useful for inheritance when creating a controller for a specific instrument. Communication with instruments is done withPyVISA.Install withpython -m pip install easy-scpiAPISCPI CommandsGeneric SCPI commands can be executed by transforming the SCPI code in to attributes via the hierarchy relationship, then calling it. Instrument properties can be queried by passing no arguments to the call. Commands with no arguments are run by passing an empty string to the call.Examples# import packageimporteasy_scpiasscpi# Connect to an instrumentinst=scpi.Instrument(<port>)# Read the voltage [MEASure:VOLTage:DC?]inst.measure.voltage.dc()# orinst.meas.volt.dc()# Set the voltage to 1 V [MEASure:VOLTage:DC 1]inst.measure.voltage.dc(1)# orinst.source.voltage('1')# Execute a command to take a reading [SYSTem:ZCORrect:ACQuire]inst.syst.zcor.aqc('')MethodsInstrument( <port>, backend = '', **resource_params ):Creates an instance of a SCPI instrument. Thebackendis used to create theVISA Resource Manager. Upon connection, theresource_paramsare passed to theVISA resource.connect():Connects the object instance to the actual instrument on the specified port.disconnect():Disconnects the instrument from the program, closing the port.write( <msg> ):Sendsmsgto the instrument.read():Gets the most recent response from the instrument.query( <msg> ):Sendsmsgto the instrument and returns its response.reset():Sets the instrument to its default state.init():Initializes the instrument for a measurement.Propertiesbackend:Returns the name of the VISA backend used. [Read Only]inst:Returns the resource used by the instance. [Read Only]port:The communication port.handshake:Handshake mode of the device. If a string is provided a handshake message will be read after every command or query. If the message matches the string, nothing occurs, otherwise an error is raised. If True a default message of 'OK' is used. If False no message is read. [Default: False]rid:The resource id associated with the instrument. [Read Only]resource_params:Returns the resource parameters passed on creation. [Read Only]timeout:The communication timeout of the instrument. [Read Only]id:The manufacturer id of the instrument. [Read Only]value:The current value of the instrument. [Read Only]connected:Whether the instrument is connected or not. [Read Only]is_connected:Alias forconnected.Full ExampleFor use with Tektronix PWS4305# scpi controllerimporteasy_scpiasscpiclassPowerSupply(scpi.Instrument):def__init__(self):super().__init__(port=None,timeout=5,read_termination='\n',write_termination='\n')# other initialization code...#--- public methods ---@propertydefvoltage(self):"""Returns the voltage setting"""returnself.source.volt.level()@voltage.setterdefvoltage(self,volts):"""Sets the voltage of the instrument"""self.source.volt.level(volts)@propertydefcurrent(self):"""Returns the current setting in Amps"""returnself.source.current.level()@current.setterdefcurrent(self,amps):"""Set the current of the instrument"""self.source.current.level(amps)defon(self):"""Turns the output on"""self.output.state('on')defoff(self):"""Turns the output off"""self.output.state('off')