Source code for PyExpLabSys.drivers.mks_937b
""" Driver for MKS 937b gauge controller """
from __future__ import print_function
import time
import logging
import serial
from PyExpLabSys.common.supported_versions import python2_and_3
# Configure logger as library logger and set supported python versions
LOGGER = logging.getLogger(__name__)
LOGGER.addHandler(logging.NullHandler())
python2_and_3(__file__)
[docs]class Mks937b(object):
""" Driver for MKS 937B Gauge Controller """
[docs] def __init__(self, port):
self.ser = serial.Serial(port, 9600, timeout=2)
time.sleep(0.1)
[docs] def comm(self, command):
""" Implement communication protocol """
prestring = b'@254'
endstring = b';FF'
self.ser.write(prestring + command.encode('ascii') + endstring)
time.sleep(0.3)
return_string = self.ser.read(self.ser.inWaiting()).decode()
success = return_string.find('ACK')
if success > 0:
return_string = return_string[success + 3 : -3]
return return_string
[docs] def read_pressure_gauge(self, gauge_number):
""" Read a specific pressure gauge """
pressure_string = self.comm('PR' + str(gauge_number) + '?')
if pressure_string.find('LO') > -1:
pressure_string = '0'
if pressure_string.find('>') > -1:
pressure_string = '-1'
if pressure_string.find('OFF') > -1:
pressure_string = '-1'
if pressure_string.find('WAIT') > -1:
pressure_string = '-1'
pressure_value = float(pressure_string)
return pressure_value
[docs] def read_sensor_types(self):
""" Return a list of connected sensors """
sensors = self.comm('MT?')
return sensors
[docs] def read_all_pressures(self):
""" Returns an overview of all sensors """
return self.comm('PRZ?')
[docs] def pressure_unit(self, unit=None):
"""Read or configure pressure unit
Legal values: torr, mbar, pascal, micron"""
if unit is not None:
self.comm('U!' + str(unit))
unit = self.comm('U?')
return unit
if __name__ == '__main__':
MKS = Mks937b('/dev/ttyUSB0')
print(MKS.read_pressure_gauge(1))
print(MKS.read_pressure_gauge(3))
print(MKS.read_pressure_gauge(5))
print(MKS.read_all_pressures())
print(MKS.read_sensor_types())
print(MKS.pressure_unit('mbar'))
# print(MKS.comm('PR1?'))
# print(MKS.comm('PR2?'))
# print MKS.set_comm_speed(9600)
# print(MKS.change_unit('MBAR'))
# print("Pressure: " + str(MKS.read_pressure()))
# print('Serial: ' + str(MKS.read_serial()))