diff --git a/pumpAgilent.py b/pumpAgilent.py new file mode 100755 index 0000000000000000000000000000000000000000..8354de3c1b55cf42ece68a125103db7a0ce98dfc --- /dev/null +++ b/pumpAgilent.py @@ -0,0 +1,90 @@ +# -*- coding: utf-8 -*- +# +# Copyright 2017 uberdaff +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, +# MA 02110-1301, USA. +# +# +# Requirement: pyserial +# +# getIdn() - Get instrument identification +# setVolt(tal) - Set the voltage on the output +# getVolt() - Get the 'set' voltage +# readVolt() - Get a measurement of the voltage +# setAmp(tal) - Set the current limit +# getAmp() - Get the 'set' current limit +# readAmp() - Get a measurement of the output current +# setOut(bool) - Set the state of the output +# setOcp(bool) - Set the state of the over current protection +# getStatus() - Get the state of the output and CC/CV +# + +import sys +import time +import serial + + +class pumpAgilent: + isConnected = False + pump_com = None + status = None + + def __init__(self, dev_com): + try: + dev_com = serial.Serial( + port = dev_com, + baudrate = 9600, + parity = serial.PARITY_NONE, + stopbits = serial.STOPBITS_ONE, + bytesize = serial.EIGHTBITS + ) + dev_com.isOpen() + self.pump_com = dev_com + self.isConnected = True + # self.status = self.getStatus() + except: + print("COM port failure:") + print(sys.exc_info()) + self.pump_com = None + self.isConnected = False + + def close(self): + self.pump_com.close() + + def serWriteAndRecieve(self, data, delay = 0.05): + self.pump_com.write(data) + out = '' + time.sleep(delay) + while self.pump_com.inWaiting() > 0: + out += self.pump_com.read(1).decode(encoding = 'ascii', errors = 'ignore') + if out != '': + return out + return None + + def getPressure(self): + return float(self.serWriteAndRecieve(b"\002\200\062\062\064\060\003\070\067")[4:12]) + + def getRpm(self): + stat = self.serWriteAndRecieve(b"\002\200\062\062\066\060\003\070\065")[4:11] + return int(stat) + + def getStatus(self): + stat = self.serWriteAndRecieve(b"\002\200\062\062\066\060\003\070\065")[4:11] + if int(stat) > 100: + self.status = 1 + else: + self.status = 0 + return self.status