add pty-gpib-emulator from github
This commit is contained in:
129
pty-gpib-emulator/python/PowerSupply.py
Normal file
129
pty-gpib-emulator/python/PowerSupply.py
Normal file
@@ -0,0 +1,129 @@
|
||||
##
|
||||
## <<<< Powersupply Emulators >>>>
|
||||
## by Aidan Macdonald (aidan.plenert.macdonald@gmail.com)
|
||||
##
|
||||
## Contains classes that emulate powersupplies by
|
||||
## building off the Device framework
|
||||
##
|
||||
|
||||
import Device, Prologix
|
||||
|
||||
## **** Power Supply class ****
|
||||
## by Aidan Macdonald (aidan.plenert.macdonald@gmail.com)
|
||||
##
|
||||
## General model of a basic Power Supply
|
||||
##
|
||||
|
||||
class PowerSupply(Prologix.Prologix_GPIB_USB):
|
||||
|
||||
##%% Initialization PowerSupply(volt, current)
|
||||
## Creates a framework for a Powersupply, but only binds
|
||||
## a reset call to "RST?". All other functions have been
|
||||
## left unbound so that children can bind them to respective
|
||||
## commands
|
||||
##
|
||||
## voltage and current default to 10
|
||||
##
|
||||
def __init__(self, volt=10, cur=10):
|
||||
Prologix.Prologix_GPIB_USB.__init__(self)
|
||||
self.addCMD("RST?", self.reset)
|
||||
|
||||
self.voltage = volt
|
||||
self.current = cur
|
||||
|
||||
##%% reset(pty, args)
|
||||
## returns that the device has been reset
|
||||
##
|
||||
def reset(self, fpl, args=[]):
|
||||
return "Power Supply has been reset"
|
||||
|
||||
##%% version(pty, args)
|
||||
## overrides the version function from superclass
|
||||
## left unbound here, because it was bound in the
|
||||
## superclass.
|
||||
##
|
||||
def version(self, fpl, args=[]):
|
||||
return "Power Supply Version 1.GEN"
|
||||
|
||||
##%% on(pty, args)
|
||||
## turns power supply on
|
||||
##
|
||||
def on(self, fpl, args=[]):
|
||||
return self.version(fpl, args) + " in now ON"
|
||||
##%% off(pty, args)
|
||||
## turns power supply off
|
||||
##
|
||||
def off(self, fpl, args=[]):
|
||||
return self.version(fpl, args) + " in now OFF"
|
||||
|
||||
##%% getVoltage(pty, args)
|
||||
## returns voltage
|
||||
##
|
||||
def getVoltage(self, fpl, args=[]):
|
||||
return self.voltage
|
||||
|
||||
##%% getCurrent(pty, args)
|
||||
## returns current
|
||||
##
|
||||
def getCurrent(self, fpl, args=[]):
|
||||
return self.current
|
||||
|
||||
|
||||
##%% setVoltage(pty, args)
|
||||
## sets voltage
|
||||
##
|
||||
def setVoltage(self, fpl, args=[]):
|
||||
try:
|
||||
self.voltage = float(args[0])
|
||||
return ""
|
||||
except:
|
||||
return "ERROR"
|
||||
##%% setCurrent(pty, args)
|
||||
## sets current
|
||||
##
|
||||
def setCurrent(self, fpl, args=[]):
|
||||
try:
|
||||
self.current = float(args[0])
|
||||
return ""
|
||||
except:
|
||||
return "ERROR"
|
||||
|
||||
|
||||
##
|
||||
## **** E3631A Power Supply Class ****
|
||||
## by Aidan Macdonald (aidan.plenert.macdonald@gmail.com)
|
||||
##
|
||||
## Emulates the E3631A Power Supply
|
||||
##
|
||||
|
||||
class E3631A(PowerSupply):
|
||||
##%% Initialization - E3631A(voltage, current)
|
||||
## see PowerSupply.PowerSupply documentation
|
||||
##
|
||||
## adds bindings for all of the PowerSupply functions
|
||||
##
|
||||
def __init__(self, volt=10, cur=10):
|
||||
PowerSupply.__init__(self, volt, cur)
|
||||
|
||||
self.addCMD("OUTP", self.outp)
|
||||
self.addCMD("MEAS:VOLT:DC", self.getVoltage)
|
||||
self.addCMD("MEAS:CURR:DC", self.getCurrent)
|
||||
self.addCMD("SET:VOLT:DC", self.setVoltage)
|
||||
self.addCMD("SET:CURR:DC", self.setCurrent)
|
||||
|
||||
##%% version(pty, args)
|
||||
## returns version
|
||||
##
|
||||
def version(self, fpl, args=[]):
|
||||
return "E3631A Power Supply"
|
||||
|
||||
##%% outp(pty, args)
|
||||
## function binding for the "OUTP" command
|
||||
## Used to turn the device on and off
|
||||
##
|
||||
def outp(self, fpl, args=[]):
|
||||
if args[0] == "ON":
|
||||
return self.on(fpl, args)
|
||||
elif args[0] == "OFF":
|
||||
return self.off(fpl, args)
|
||||
return ""
|
||||
Reference in New Issue
Block a user