def establishConnection(self): # Move to hardware? """ Establish the connection. The SIN-11 device used to control the Pixorb axis needs to be initialised before any command can be sent to the axis controllers. """ AbstractHardwarePlugin.establishConnection(self) Logger().trace("AbstractPixOrbHardware.establishConnection()") if not AbstractPixOrbHardware.__initSIN11: try: answer = "" self._driver.empty() # Ask the SIN-11 to scan online controllers self._driver.write('&') # Add '\n' if ethernet driver? self._driver.setTimeout(SIN11_INIT_TIMEOUT) # Sin-11 takes several seconds to answer c = '' while c != '\r': c = self._driver.read(1) if c in ('#', '?'): self._driver.read(2) # Read last CRLF Logger().debug("AbstractPixOrbHardware.establishConnection(): SIN-11 '&' answer=%s" % answer) raise HardwareError("Can't init SIN-11") else: answer += c answer = answer.strip() # Remove final CRLF Logger().debug("AbstractPixOrbHardware.establishConnection(): SIN-11 '&' answer=%s" % answer) AbstractPixOrbHardware.__initSIN11 = True self._driver.setTimeout(ConfigManager().getFloat('Plugins/HARDWARE_COM_TIMEOUT')) except: self._connected = False raise