Source code for NDMonitor.Driver_Leybold

"""
Driver for Leybold Combivac IT23 pressure control device.
The latter must be connected through a certain COM port (virtual or real).
Driver first initializes, then opens serial connection and reads the pressure values.
Driver handles the correct pressure to transmit
"""
import serial.tools.list_ports
import logging
import io


[docs]class Driver: def __init__(self, com_name): self.com_name = com_name self.pressure_string = "" self.data_to_return = "" def get_pressure(self, *args): self.pressure_string = "" self.data_to_return = "" """ Opens serial connection and request/read the pressure values """ ser = serial.Serial(self.com_name, baudrate=9600, bytesize=serial.EIGHTBITS, parity=serial.PARITY_NONE, stopbits=serial.STOPBITS_ONE, timeout=0.1) ser_io = io.TextIOWrapper(io.BufferedRWPair(ser, ser, 1), newline='\r', line_buffering=True) """Write a command(s) to the controller and read the reply """ if args: try: command_full = str(args[0]) + "\r" ser_io.write(command_full) self.read_str_raw = ser_io.readline() except Exception as e: logging.exception(e) pass else: command_full = "MES 1" + "\r" ser_io.write(command_full) # request pressure value for channel 1 self.read_str_raw = ser_io.readline()[7:] # get only necessary numbers command_full = "MES 2" + "\r" ser_io.write(command_full) # # request pressure value for channel 2 self.read_str_raw += ","+ser_io.readline()[7:] # get only necessary numbers ser.close() """Handle the received data""" try: self.pressure_string = ''.join(self.read_str_raw.split()) # get rid of spaces except: self.pressure_string = "NAN" pass """Decide what to transmit""" try: for i in self.pressure_string.split(','): try: self.pressure_value = float(i) if (self.pressure_value > 0.0000000001) and (self.pressure_value < 0.01): self.data_to_return += str(self.pressure_value)+"," else: self.data_to_return += "NAN," except: if i == "underrange": self.data_to_return += "under," elif i == "overrange": self.data_to_return += "over," else: self.data_to_return += "NAN," pass except Exception as e: logging.exception(e) self.data_to_return = "NAN" pass try: return str(self.data_to_return) except Exception as e: logging.exception(e) pass