def ConnectPump(self, event): self.DisconnectPump() if not self.GetAvailableComPorts(): event = Events.PumpConnectedEvent(Events.PUMP_CONNECTED, self.GetId(), 0, _("No device connected!")) wx.PostEvent(self.parent, event) return numberOfDevices = len(self.availableComPorts) code = 0 if numberOfDevices > 0: try: print("[INFO]\tCreating pump thread...") self.pumpThread = Threads.PumpThread(self.availableComPorts[0], self.pumpQueue, self) self.pumpThread.start() except Exception, ex: print ("[ERROR]\t {}".format(ex.message)) else: print("[INFO]\t {}".format("Pump thread created.")) self.pumpThread.Write("FLOW?\r") code += 1
class Pump(wx.EvtHandler): PORT_BAUD_RATE = 9600 E_CONNECTION = _("Connection failed") MIN_FLOW = 100 MAX_FLOW = 5000 def __init__(self, parent, *args, **kw): super(Pump, self).__init__(*args, **kw) self.id = wx.NewId() self.parent = parent self.isConnected = False self.isFlowOn = False self.pumpQueue = Queue.Queue() self.injQueue = Queue.Queue() self.Bind(Events.EVT_SERIALRX, self.ParsePumpResponse) self.Bind(Events.EVT_FLOW_IS_ON, self.OnFlowOn) self.ConnectPump(None) def GetId(self): return self.id def GetAvailableComPorts(self): self.ports = serial.tools.list_ports.comports() self.availableComPorts = [] for port in serial.tools.list_ports.comports(): self.availableComPorts.append(port.device) if len(self.availableComPorts) < 1: print ("[ERROR]\tNo devices connected!") return [] print("[INFO]\tConnected COM ports: " + str(self.availableComPorts)) return self.availableComPorts def ConnectPump(self, event): self.DisconnectPump() if not self.GetAvailableComPorts(): event = Events.PumpConnectedEvent(Events.PUMP_CONNECTED, self.GetId(), 0, _("No device connected!")) wx.PostEvent(self.parent, event) return numberOfDevices = len(self.availableComPorts) code = 0 if numberOfDevices > 0: try: print("[INFO]\tCreating pump thread...") self.pumpThread = Threads.PumpThread(self.availableComPorts[0], self.pumpQueue, self) self.pumpThread.start() except Exception, ex: print ("[ERROR]\t {}".format(ex.message)) else: print("[INFO]\t {}".format("Pump thread created.")) self.pumpThread.Write("FLOW?\r") code += 1 if numberOfDevices > 1: try: print("[INFO]\tCreating injector thread...") self.injThread = Threads.PumpThread(self.availableComPorts[1], self.injQueue, self) self.injThread.start() except Exception, ex: print ("[ERROR]\t {}".format(ex.message)) else: print("[INFO]\t {}".format("Injector thread created.")) self.injThread.Write("INJ?\r") code += 2