def init(self): super(GphlWorkflowConnection, self).init() if self.hasObject("connection_parameters"): self._connection_parameters.update( self["connection_parameters"].getProperties()) if self.hasObject("ssh_options"): # We are running through ssh - so we need python_address # If not, we stick to default, which is localhost (127.0.0.1) self._connection_parameters["python_address"] = socket.gethostname( ) locations = next( self.getObjects("directory_locations")).getProperties() paths = self.software_paths props = self.java_properties dd0 = next(self.getObjects("software_paths")).getProperties() for tag, val in dd0.items(): val2 = val.format(**locations) if not os.path.isabs(val2): val2 = HWR.getHardwareRepository().findInRepository(val) if val2 is None: raise ValueError("File path %s not recognised" % val) paths[tag] = val2 dd0 = next(self.getObjects("software_properties")).getProperties() for tag, val in dd0.items(): val2 = val.format(**locations) if not os.path.isabs(val2): val2 = HWR.getHardwareRepository().findInRepository(val) if val2 is None: raise ValueError("File path %s not recognised" % val) paths[tag] = props[tag] = val2 # pp0 = props["co.gphl.wf.bin"] = paths["GPHL_INSTALLATION"] paths["BDG_home"] = paths.get("co.gphl.wf.bdg_licence_dir") or pp0
def init(self): try: self.aperture_HO = HardwareRepository.getHardwareRepository().getHardwareObject( self.getProperty("aperture") ) self.connect(self.aperture_HO, "apertureChanged", self.aperture_pos_changed) except BaseException: logging.getLogger("HWR").debug("BeamInfo: aperture not defined correctly") try: self.slits_HO = HardwareRepository.getHardwareRepository().getHardwareObject( self.getProperty("slits") ) self.connect(self.slits_HO, "gapSizeChanged", self.slits_gap_changed) except BaseException: logging.getLogger("HWR").debug("BeamInfo: slits not defined correctly") try: self.beam_definer_HO = HardwareRepository.getHardwareRepository().getHardwareObject( self.getProperty("definer") ) self.connect( self.beam_definer_HO, "definerPosChanged", self.definer_pos_changed ) except BaseException: logging.getLogger("HWR").debug( "BeamInfo: beam definer not defined correctly" ) self.beam_position_hor = self.getChannelObject("beam_position_hor") self.beam_position_hor.connectSignal("update", self.beam_pos_hor_changed) self.beam_position_ver = self.getChannelObject("beam_position_ver") self.beam_position_ver.connectSignal("update", self.beam_pos_ver_changed) self.chan_beam_size_microns = self.getChannelObject("beam_size_microns") self.chan_beam_shape_ellipse = self.getChannelObject("beam_shape_ellipse")
def get_hardware_object(self, hardware_object_name, optional=False): splash_screen = gui.get_splash_screen() if splash_screen: splash_screen.set_message( "Loading hardware object defined in %s.xml" % hardware_object_name) if not hardware_object_name in self.__loaded_hardware_objects: if splash_screen: splash_screen.inc_progress_value() self.__loaded_hardware_objects.append(hardware_object_name) hwobj = HardwareRepository.getHardwareRepository().getHardwareObject( hardware_object_name) if hwobj is not None: self.connect(hwobj, "progressInit", self.progress_init) self.connect(hwobj, "progressStep", self.progress_step) self.connect(hwobj, "progressStop", self.progress_stop) self.connect(hwobj, "statusMessage", self.status_message_changed) if hwobj is None and not optional: logging.getLogger("GUI").error( "%s: Unable to initialize hardware object defined in %s.xml" % (self.objectName(), hardware_object_name[1:])) self.set_background_color(Colors.LIGHT_RED) self.__failed_to_load_hwobj = True self.setDisabled(True) return hwobj
def beamline(): hwr_path = os.path.join(HWR_DIR, "configuration/test") HWR._instance = HWR.beamline = None HWR.init_hardware_repository(hwr_path) hwr = HWR.getHardwareRepository() hwr.connect() return HWR.beamline
def test(): hwr = HWR.getHardwareRepository() hwr.connect() conn = hwr.getHardwareObject("/ldapconnection") # conn.login("20141015", "4dBM0lx3pw") # ok,name = conn.login("99140198", "5u4Twf70K5") # ok,name = conn.login("mx20100023", "tisabet") # ok,name = conn.login("anything", "tisabet") # info = conn.getinfo("legrand") # info = conn.getinfo("20100023") # conn.find_groups_for_username('houdusse') # grps = conn.find_groups_for_username('houdusse') # for grp,users in grps.items(): # print grp, " : " , users user = "******" # '20100023' sess = conn.find_sessions_for_user("%s" % user) for onesess in sess: print("Session for %s" % user, onesess) validsess = conn.find_valid_sessions_for_user(user) for valid in validsess: print("Valid session for today", valid)
def __init__(self, design_mode=False, show_maximized=False, no_border=False): """Main mxcube gui widget""" QtImport.QWidget.__init__(self) self.framework = None self.gui_config_file = None self.user_file_dir = None self.configuration = None self.user_settings = None self.launch_in_design_mode = design_mode self.hardware_repository = HardwareRepository.getHardwareRepository() self.show_maximized = show_maximized self.no_border = no_border self.windows = [] self.splash_screen = SplashScreen(Icons.load_pixmap("splash")) set_splash_screen(self.splash_screen) self.splash_screen.show() self.time_stamp = 0
def get_hardware_object(self, hardware_object_name, optional=False): splash_screen = gui.get_splash_screen() if splash_screen: splash_screen.set_message( "Loading hardware object defined in %s.xml" % hardware_object_name ) if not hardware_object_name in self.__loaded_hardware_objects: if splash_screen: splash_screen.inc_progress_value() self.__loaded_hardware_objects.append(hardware_object_name) hwobj = HardwareRepository.getHardwareRepository().getHardwareObject( hardware_object_name ) if hwobj is not None: self.connect(hwobj, "progressInit", self.progress_init) self.connect(hwobj, "progressStep", self.progress_step) self.connect(hwobj, "progressStop", self.progress_stop) self.connect(hwobj, "statusMessage", self.status_message_changed) if hwobj is None and not optional: logging.getLogger("GUI").error( "%s: Unable to initialize hardware object defined in %s.xml" % (self.objectName(), hardware_object_name[1:]) ) self.set_background_color(Colors.LIGHT_RED) self.__failed_to_load_hwobj = True self.setDisabled(True) return hwobj
def __init__(self, parent=None, widgetName=""): Connectable.Connectable.__init__(self) QWidget.__init__(self, parent, widgetName) self.setSizePolicy(QSizePolicy.MinimumExpanding, QSizePolicy.MinimumExpanding) self.propertyBag = PropertyBag.PropertyBag() self.__enabledState = True # saved enabled state self.__loadedHardwareObjects = [] self._signalSlotFilters = {} self._widgetEvents = [] # # add what's this help # QWhatsThis.add(self, "%s (%s)\n" % (widgetName, self.__class__.__name__)) # # add properties shared by all BlissWidgets # self.addProperty("fontSize", "string", str(self.font().pointSize())) # self.addProperty("alignment", "combo", ("none", "top center", "top left", "top right", "bottom center", "bottom left", "bottom right", "center", "left", "right"), "none") self.addProperty("instanceAllowAlways", "boolean", False) # , hidden=True) self.addProperty("instanceAllowConnected", "boolean", False) # , hidden=True) # # connect signals / slots # dispatcher.connect( self.__hardwareObjectDiscarded, "hardwareObjectDiscarded", HardwareRepository.getHardwareRepository(), ) self.defineSlot("enable_widget", ())
def init(self): """ Ggonio axes definitions are static motorHO is expected to have get_position() that returns coordinate in mm """ self.motorConstraints = [] self.gonioAxes = [] for axis in self["gonioAxes"]: self.gonioAxes.append({ "type": axis.type, "direction": eval(axis.direction), "motor_name": axis.motorname, "motor_HO": HardwareRepository.getHardwareRepository().getHardwareObject( axis.motorHO), }) """ This version is lacking video microscope object. Therefore we model only static camera axes directions, but no camera axes scaling or center - which are dynamic. Therefore, camera coordinates are relative, in mm. """ self.cameraAxes = [] for axis in self["cameraAxes"]: self.cameraAxes.append({ "axis_name": axis.axisname, "direction": eval(axis.direction) }) self.mI = numpy.diag([1.0, 1.0, 1.0]) # identity matrix self.calibrate()
def test(): hwr = HWR.getHardwareRepository() hwr.connect() flux = hwr.getHardwareObject("/flux") print("PX1 Flux is ", flux.get_value())
def test_hwo(): from gui.utils.QtImport import * import time from HardwareRepository import HardwareRepository as HWR hwr = HWR.getHardwareRepository() hwr.connect() hwo = hwr.getHardwareObject("/singleton_objects/limavideo") print("Image dimensions: ", hwo.get_image_dimensions()) print("Live Mode: ", hwo.get_video_live()) app = QApplication([]) win = QMainWindow() lab = QLabel("toto") print("Image dimensions: ", hwo.get_image_dimensions()) hwo.set_video_live(True) hwo.set_exposure_time(0.05) time.sleep(1) qimg = hwo.get_new_image() px = QPixmap(qimg) px = px.scaled(QSize(px.width() * 0.5, px.height() * 0.5)) lab.setPixmap(px) win.setCentralWidget(lab) win.show() app.exec_()
def test(): hwr = HardwareRepository.getHardwareRepository() hwr.connect() shut = hwr.getHardwareObject("/fastshutter") print("Shutter State is: ", shut.readShutterState())
def test(): hwr = HardwareRepository.getHardwareRepository() hwr.connect() flux = hwr.getHardwareObject("/flux") print "PX1 Flux is ", flux.getCurrentFlux()
def test(): hwr = HWR.getHardwareRepository() hwr.connect() shut = hwr.getHardwareObject("/fastshutter") print(("Shutter State is: ", shut.readShutterState()))
def test(): hwr = HardwareRepository.getHardwareRepository() hwr.connect() conn = hwr.getHardwareObject("/ldapconnection") # conn.login("20141015", "4dBM0lx3pw") # ok,name = conn.login("99140198", "5u4Twf70K5") # ok,name = conn.login("mx20100023", "tisabet") # ok,name = conn.login("anything", "tisabet") # info = conn.getinfo("legrand") # info = conn.getinfo("20100023") # conn.find_groups_for_username('houdusse') # grps = conn.find_groups_for_username('houdusse') # for grp,users in grps.iteritems(): # print grp, " : " , users user = "******" # '20100023' sess = conn.find_sessions_for_user("%s" % user) for onesess in sess: print "Session for %s" % user, onesess validsess = conn.find_valid_sessions_for_user(user) for valid in validsess: print "Valid session for today", valid
def test(): import sys hwr = HardwareRepository.getHardwareRepository() hwr.connect() ruche = hwr.getHardwareObject("/ruche") filename = sys.argv[1] ruche.trigger_sync(filename)
def getAxisMotor(self): hwmot = None motorname = self.getProperty("motor") if motorname: hwmot = HardwareRepository.getHardwareRepository( ).getHardwareObject(motorname) return hwmot
def addPage(self, pageName): self.__pages.append(ProcedureWidgets.ProcedurePanel(self)) self.__pages[-1].setProcedure( HardwareRepository.getHardwareRepository().getProcedure( self["mnemonic"])) self.procedureTab.addTab(self.__pages[-1], pageName) return self.__pages[-1]
def init(self): self.__axis = [] for token in self: if token.name() == "axis": axis_name = token.getProperty("objectName") if axis_name is not None: axis = HWR.getHardwareRepository().getHardwareObject(axis_name) if axis is not None: self.__axis.append(axis)
def __init__(self, parent=None, widget_name=''): """ Descript. : """ Connectable.Connectable.__init__(self) QFrame.__init__(self, parent) self.setObjectName(widget_name) self.property_bag = PropertyBag.PropertyBag() self.__enabledState = True self.__loaded_hardware_objects = [] self.__failed_to_load_hwobj = False self.__use_progress_dialog = False self._signal_slot_filters = {} self._widget_events = [] self.setWhatsThis("%s (%s)\n" % (widget_name, self.__class__.__name__)) self.addProperty('fontSize', 'string', str(self.font().pointSize())) self.addProperty('frame', 'boolean', False, comment="Draw a frame around the widget") self.addProperty('instanceAllowAlways', 'boolean', False, comment="Allow to control brick in all modes") self.addProperty('instanceAllowConnected', 'boolean', False, comment="Allow to control brick in slave mode") self.addProperty('fixedWidth', 'integer', '-1', comment="Set fixed width in pixels") self.addProperty('fixedHeight', 'integer', '-1', comment="Set fixed height in pixels") self.addProperty('hide', 'boolean', False, comment="Hide widget") dispatcher.connect(self.__hardwareObjectDiscarded, 'hardwareObjectDiscarded', HardwareRepository.getHardwareRepository()) self.defineSlot('enable_widget', ()) self.defineSlot('disable_widget', ()) #If PySide used then connect method was not overriden #This solution of redirecting methods works... self.connect = self.connect_hwobj self.diconnect = self.disconnect_hwobj
def test(): hwr = HWR.getHardwareRepository() hwr.connect() light = hwr.getHardwareObject("/frontlight") print('\nLight control for "%s"\n' % light.getUserName()) print(" Level limits are:", light.get_limits()) print(" Current level is:", light.getLevel()) print(" Current state is:", light.get_state())
def init(self): controller = HWR.getHardwareRepository().getHardwareObject( self.getProperty("controller")) cryostat = self.getProperty("cryostat") self.interval = self.getProperty("interval") or 10 self.ctrl = getattr(controller, cryostat) if self.ctrl is not None: self.get_params() gevent.spawn(self._do_polling)
def test(): hwr = HardwareRepository.getHardwareRepository() hwr.connect() light = hwr.getHardwareObject("/frontlight") print '\nLight control for "%s"\n' % light.getUserName() print " Level limits are:", light.getLimits() print " Current level is:", light.getLevel() print " Current state is:", light.getState()
def addPage(self, pageName): self.__pages.append(ProcedureWidgets.ProcedurePanel(self)) self.__pages[-1].setProcedure( HardwareRepository.getHardwareRepository().getProcedure(self["mnemonic"]) ) self.procedureTab.addTab(self.__pages[-1], pageName) return self.__pages[-1]
def __init__(self, parent=None, widget_name=""): Connectable.Connectable.__init__(self) QtImport.QFrame.__init__(self, parent) self.setObjectName(widget_name) self.property_bag = PropertyBag.PropertyBag() self.__enabled_state = True self.__loaded_hardware_objects = [] self.__failed_to_load_hwobj = False self.__use_progress_dialog = False self._signal_slot_filters = {} self._widget_events = [] self.setWhatsThis("%s (%s)\n" % (widget_name, self.__class__.__name__)) self.add_property("fontSize", "string", str(self.font().pointSize())) self.add_property("frame", "boolean", False, comment="Draw a frame around the widget") self.add_property( "instanceAllowAlways", "boolean", False, comment="Allow to control brick in all modes", ) self.add_property( "instanceAllowConnected", "boolean", False, comment="Allow to control brick in slave mode", ) self.add_property("fixedWidth", "integer", "-1", comment="Set fixed width in pixels") self.add_property("fixedHeight", "integer", "-1", comment="Set fixed height in pixels") self.add_property("hide", "boolean", False, comment="Hide widget") dispatcher.connect( self.__hardware_object_discarded, "hardwareObjectDiscarded", HardwareRepository.getHardwareRepository(), ) self.define_slot("enable_widget", ()) self.define_slot("disable_widget", ()) # If PySide used then connect method was not overriden # This solution of redirecting methods works... self.connect = self.connect_hwobj self.diconnect = self.disconnect_hwobj
def _init(self): self.stream_hash = "#" self.udiffVER_Ok = False self.badimg = 0 self.pollInterval = 500 self.connected = False self.image_name = self.getProperty("image_name") xml_path = HWR.getHardwareRepository().serverAddress[0] self.image = os.path.join(xml_path, self.image_name) self.setIsReady(True)
def getAxisMotor(self): hwmot = None motorname = self.getProperty("motor") if motorname: hwmot = HardwareRepository.getHardwareRepository().getHardwareObject( motorname ) return hwmot
def init(self): controller = HardwareRepository.getHardwareRepository().getHardwareObject( self.getProperty("controller") ) cryostat = self.getProperty("cryostat") self.interval = self.getProperty("interval") or 10 self.ctrl = getattr(controller, cryostat) if self.ctrl is not None: self.get_params() gevent.spawn(self._do_polling)
def init(self): self.__axis = [] for token in self: if token.name() == "axis": axis_name = token.getProperty("objectName") if axis_name is not None: axis = HardwareRepository.getHardwareRepository().getHardwareObject( axis_name ) if axis is not None: self.__axis.append(axis)
def __init__(self, parent=None, widget_name=""): Connectable.Connectable.__init__(self) QtImport.QFrame.__init__(self, parent) self.setObjectName(widget_name) self.property_bag = PropertyBag.PropertyBag() self.__enabled_state = True self.__loaded_hardware_objects = [] self.__failed_to_load_hwobj = False self.__use_progress_dialog = False self._signal_slot_filters = {} self._widget_events = [] self.setWhatsThis("%s (%s)\n" % (widget_name, self.__class__.__name__)) self.add_property("fontSize", "string", str(self.font().pointSize())) self.add_property( "frame", "boolean", False, comment="Draw a frame around the widget" ) self.add_property( "instanceAllowAlways", "boolean", False, comment="Allow to control brick in all modes", ) self.add_property( "instanceAllowConnected", "boolean", False, comment="Allow to control brick in slave mode", ) self.add_property( "fixedWidth", "integer", "-1", comment="Set fixed width in pixels" ) self.add_property( "fixedHeight", "integer", "-1", comment="Set fixed height in pixels" ) self.add_property("hide", "boolean", False, comment="Hide widget") dispatcher.connect( self.__hardware_object_discarded, "hardwareObjectDiscarded", HardwareRepository.getHardwareRepository(), ) self.define_slot("enable_widget", ()) self.define_slot("disable_widget", ()) # If PySide used then connect method was not overriden # This solution of redirecting methods works... self.connect = self.connect_hwobj self.diconnect = self.disconnect_hwobj
def get_hardware_objects_info(self): info_dict = {} for ho_name in self.__loaded_hardware_objects: info = HardwareRepository.getHardwareRepository().getInfo(ho_name) if len(info) > 0: info_dict[ho_name] = info if len(info_dict): return "Hardware Objects:\n\n%s" % pprint.pformat(info_dict) else: return ""
def __init__(self, designMode=False, showMaximized=False, noBorder=False): qt.QWidget.__init__(self) self.launchInDesignMode = designMode self.hardwareRepository = HardwareRepository.getHardwareRepository() self.showMaximized = showMaximized self.noBorder = noBorder self.windows = [] self.splashScreen = BlissSplashScreen(Icons.load("splash"), qt.Qt.WDestructiveClose) self.splashScreen.show() self.timestamp = 0
def getHardwareObject(self, hardwareObjectName): if not hardwareObjectName in self.__loadedHardwareObjects: self.__loadedHardwareObjects.append(hardwareObjectName) screen = get_splash_screen() if screen is not None: screen.set_message("Loading hardware object: %s" % hardwareObjectName) ho = HardwareRepository.getHardwareRepository().getHardwareObject( hardwareObjectName) return ho
def getHardwareObjectsInfo(self): d = {} for ho_name in self.__loadedHardwareObjects: info = HardwareRepository.getHardwareRepository().getInfo(ho_name) if len(info) > 0: d[ho_name] = info if len(d): return "Hardware Objects:\n\n%s" % pprint.pformat(d) else: return ""
def test(): hwr = HardwareRepository.getHardwareRepository() hwr.connect() zoom = hwr.getHardwareObject("/zoom-auto-brightness") print type(zoom.getState()) print " Zoom position is : ", zoom.getPosition() print "Zoom position name is : ", zoom.getCurrentPositionName() print " Moving : ", zoom.motorIsMoving() print " State : ", zoom.getState() print " Positions : ", zoom.getPredefinedPositionsList()
def test(): hwr = HWR.getHardwareRepository() hwr.connect() ap_pos = hwr.getHardwareObject("/aperture_position") ap_diam = hwr.getHardwareObject("/aperture_diameter") yag_pos = hwr.getHardwareObject("/scintillator") md2_phase = hwr.getHardwareObject("/md2j_phase") print("Aperture Position: ", ap_pos.get_state()) print("Aperture Diameter: ", ap_diam.get_state()) print("Yag Posiion: ", yag_pos.get_state()) print("MD2 Phase: ", md2_phase.get_state())
def __init__(self, designMode=False, showMaximized=False, noBorder=False): qt.QWidget.__init__(self) self.launchInDesignMode = designMode self.hardwareRepository = HardwareRepository.getHardwareRepository() self.showMaximized = showMaximized self.noBorder = noBorder self.windows = [] self.splashScreen = BlissSplashScreen( Icons.load("splash"), qt.Qt.WDestructiveClose ) self.splashScreen.show() self.timestamp = 0
def getHardwareObject(self, hardwareObjectName): if not hardwareObjectName in self.__loadedHardwareObjects: self.__loadedHardwareObjects.append(hardwareObjectName) screen = get_splash_screen() if screen is not None: screen.set_message("Loading hardware object: %s" % hardwareObjectName) ho = HardwareRepository.getHardwareRepository().getHardwareObject( hardwareObjectName ) return ho
def test(): hwr = HardwareRepository.getHardwareRepository() hwr.connect() ap_pos = hwr.getHardwareObject("/aperture_position") ap_diam = hwr.getHardwareObject("/aperture_diameter") yag_pos = hwr.getHardwareObject("/scintillator") md2_phase = hwr.getHardwareObject("/md2j_phase") print "Aperture Position: ", ap_pos.getState() print "Aperture Diameter: ", ap_diam.getState() print "Yag Posiion: ", yag_pos.getState() print "MD2 Phase: ", md2_phase.getState()
def test(): hwr = HardwareRepository.getHardwareRepository() hwr.connect() sess = hwr.getHardwareObject("/session") sess.set_user_info("mx2014", "143301", "14330", "20100023") path = "/927bis/ccd/2015_Run2/visitor/mx2014/px2/20150120/ARCHIVE/mx2014/mx2014_2_4.snapshot.jpeg" ispyb_path = sess.path_to_ispyb(path) print path print " will become " print ispyb_path
def test(): from HardwareRepository import HardwareRepository as HWR hwr = HWR.getHardwareRepository() hwr.connect() zoom = hwr.getHardwareObject("/zoom-auto-brightness") print(type(zoom.get_state())) print(" Zoom position is : ", zoom.get_value()) print("Zoom position name is : ", zoom.get_current_position_name()) print(" Moving : ", zoom.motorIsMoving()) print(" State : ", zoom.get_state()) print(" Positions : ", zoom.getPredefinedPositionsList())
def end_init(self): if self.__initialized: return controller = HWR.getHardwareRepository().getHardwareObject( self.getProperty( "controller")) # self.getObjectByRole("controller") # this is ugly : I added it to make the centring procedure happy self.specName = self.actuator_name self.motor = getattr(controller, self.actuator_name) self.connect(self.motor, "position", self.positionChanged) self.connect(self.motor, "state", self.updateState) self.__initialized = True
def test(): hwr = HWR.getHardwareRepository() hwr.connect() sess = HWR.beamline.session sess.set_user_info("mx2014", "143301", "14330", "20100023") path = "/927bis/ccd/2015_Run2/visitor/mx2014/px2/20150120/ARCHIVE/mx2014/mx2014_2_4.snapshot.jpeg" ispyb_path = sess.path_to_ispyb(path) print(path) print(" will become ") print(ispyb_path)
def init(self): try: self.aperture_HO = HWR.getHardwareRepository().getHardwareObject( self.getProperty("aperture")) self.connect(self.aperture_HO, "apertureChanged", self.aperture_pos_changed) except BaseException: logging.getLogger("HWR").debug( "BeamInfo: aperture not defined correctly") try: self.slits_HO = HWR.getHardwareRepository().getHardwareObject( self.getProperty("slits")) self.connect(self.slits_HO, "gapSizeChanged", self.slits_gap_changed) except BaseException: logging.getLogger("HWR").debug( "BeamInfo: slits not defined correctly") try: self.connect( HWR.beamline.beam.beam_definer, "definerPosChanged", self.definer_pos_changed, ) except BaseException: logging.getLogger("HWR").debug( "BeamInfo: beam definer not defined correctly") self.beam_position_hor = self.get_channel_object("beam_position_hor") self.beam_position_hor.connectSignal("update", self.beam_pos_hor_changed) self.beam_position_ver = self.get_channel_object("beam_position_ver") self.beam_position_ver.connectSignal("update", self.beam_pos_ver_changed) self.chan_beam_size_microns = self.get_channel_object( "beam_size_microns") self.chan_beam_shape_ellipse = self.get_channel_object( "beam_shape_ellipse")
def test(): import sys hwr = HardwareRepository.getHardwareRepository() hwr.connect() conn = hwr.getHardwareObject(sys.argv[1]) print "Machine current: ", conn.getCurrent() print "Life time: ", conn.getLifeTime() print "TopUp remaining: ", conn.getTopUpRemaining() print "Message: ", conn.getMessage() while True: gevent.wait(timeout=0.1)
def setMotor(self, motor_mne): if self.motor is not None: QObject.disconnect(self.motor, PYSIGNAL('positionChanged'), self.motorPositionChanged) self.motor = HardwareRepository.getHardwareRepository().getHardwareObject(motor_mne) if self.motor is not None: self.cmdMotorPosition.setEnabled(True) QObject.connect(self.motor, PYSIGNAL('positionChanged'), self.motorPositionChanged) if self.motor.isReady(): self.motorPositionChanged(self.motor.getPosition()) else: self.motorPositionChanged('unavailable') else: self.cmdMotorPosition.setText(MotorPositionReminder.NOPOSITION) self.cmdMotorPosition.setEnabled(False)
def init(self): self.collect_obj = self.getObjectByRole("collect") self.start_edna_command = self.getProperty("edna_command") self.edna_default_file = self.getProperty("edna_default_file") fp = HWR.getHardwareRepository().findInRepository( self.edna_default_file) if fp is None: fp = self.edna_default_file if not os.path.exists(fp): raise ValueError("File %s not found in repository" % fp) with open(fp, "r") as f: self.edna_default_input = "".join(f.readlines())
def setMotor(self, motor_mne): self.motor = HardwareRepository.getHardwareRepository().getHardwareObject(motor_mne) if self.motor is not None: self.cmdMotorPosition.setEnabled(True) try: self.motor.connect('positionChanged', self.motorPositionChanged) except BaseException: logging.getLogger().exception("%s: could not get motor position", self.motor.name()) self.motorPositionChanged('unavailable') else: if self.motor.isReady(): self.motorPositionChanged(self.motor.getPosition()) else: self.motorPositionChanged('unavailable') else: self.cmdMotorPosition.setText(MotorPositionReminder.NOPOSITION) self.cmdMotorPosition.setEnabled(False)
def test(): hwr = HardwareRepository.getHardwareRepository() hwr.connect() db = hwr.getHardwareObject("/singleton_objects/dbconnection") print "db", db print "dir(db)", dir(db) # print 'db._SOLEILISPyBClientShipping', db._SOLEILISPyBClientShipping # print 'db.Shipping', db.Shipping proposal_code = "mx" proposal_number = "20100023" proposal_psd = "tisabet" info = db.get_proposal(proposal_code, proposal_number) # proposal_number) print info info = db.login(proposal_number, proposal_psd) print info
def getHardwareObject(self, hardware_object_name, optional=False): """ Descript. : """ splash_screen = BlissFramework.get_splash_screen() if splash_screen: splash_screen.set_message(\ "Loading hardware object defined in %s.xml" % hardware_object_name) if not hardware_object_name in self.__loaded_hardware_objects: self.__loaded_hardware_objects.append(hardware_object_name) hwobj = HardwareRepository.getHardwareRepository().\ getHardwareObject(hardware_object_name) if hwobj is not None: self.connect(hwobj, "progressInit", self.progress_init) self.connect(hwobj, 'progressStep', self.progress_step) self.connect(hwobj, 'progressStop', self.progress_stop) self.connect(hwobj, 'statusMessage', self.status_message_changed) if hwobj is None and not optional: logging.getLogger("GUI").error(\ "%s: Unable to initialize hardware object defined in %s.xml" % \ (self.objectName(), hardware_object_name[1:])) self.set_background_color(Qt4_widget_colors.LIGHT_RED) self.__failed_to_load_hwobj = True self.setDisabled(True) return hwobj
def __init__(self, design_mode=False, show_maximized=False, no_border=False): """init""" QWidget.__init__(self) self.framework = None self.gui_config_file = None self.user_file_dir = None self.configuration = None self.user_settings = None self.launch_in_design_mode = design_mode self.hardware_repository = HardwareRepository.getHardwareRepository() self.show_maximized = show_maximized self.no_border = no_border self.windows = [] self.splash_screen = BlissSplashScreen(Qt4_Icons.load_pixmap('splash')) set_splash_screen(self.splash_screen) self.splash_screen.show() self.timestamp = 0
def init(hwr_path): hwr = HardwareRepository.getHardwareRepository(hwr_path) hwr.connect() global beamline_setup global queue_model global queue_manager beamline_setup = hwr.getHardwareObject("beamline-setup") queue_model = hwr.getHardwareObject("queue-model") queue_manager = hwr.getHardwareObject("queue") logging.getLogger("API").debug("Initializing API...") error_count = 0 for role in CORE_HWOBJ_ROLES: if hasattr(beamline_setup, "%s_hwobj" % role): setattr(sys.modules[__name__], role, getattr(beamline_setup, "%s_hwobj" % role)) else: setattr(sys.modules[__name__], role, None) logging.getLogger("HWR").warning("API: %s role is not defined in the beamline_setup" % role) error_count += 1 for role in ADDITIONAL_HWOBJ_ROLES: if hasattr(beamline_setup, "%s_hwobj" % role): setattr(sys.modules[__name__], role, getattr(beamline_setup, "%s_hwobj" % role)) else: setattr(sys.modules[__name__], role, None) if error_count == 0: logging.getLogger("HWR").info("Initializing of API done") else: logging.getLogger("API").info("Initializing of API done (%d warning(s): see messages above)." % error_count) setattr(sys.modules[__name__], "lims", getattr(beamline_setup, "lims_client_hwobj")) setattr(sys.modules[__name__], "graphics", getattr(beamline_setup, "shape_history_hwobj"))
def test(): import sys import os if len(sys.argv) != 5: print( "Usage: %s triggermode (exts/ints) nb_images exp_time energy" % sys.argv[0] ) sys.exit(0) else: try: trigmode = sys.argv[1] nimages = float(sys.argv[2]) exptime = float(sys.argv[3]) egy = float(sys.argv[4]) except ValueError: print("Cannot decode parameters. Aborting") sys.exit(0) if trigmode not in ["exts", "ints"]: print('Bad trigger mode. It should be "exts" or "ints"') sys.exit(0) hwr = HardwareRepository.getHardwareRepository() hwr.connect() obj = hwr.getHardwareObject("/detector") config = { "OmegaStart": 0, "OmegaIncrement": 0.1, "BeamCenterX": None, # length not pixel "BeamCenterY": None, "DetectorDistance": None, "FrameTime": exptime, "NbImages": nimages, "NbTriggers": None, "ImagesPerFile": None, "RoiMode": "4M", "FilenamePattern": None, "PhotonEnergy": egy, "TriggerMode": trigmode, } if obj.get_status() == "not_init": print("Cannot initialize hardware object") sys.exit(0) if not obj.is_idle(): obj.stop_acquisition() obj.wait_idle() obj.prepare_acquisition(config) print("Waiting for configuration finished") while obj.is_preparing(): gevent.wait(timeout=0.1) gevent.sleep(0.1) print(".") if obj.prepare_error(): print("Prepare went wrong. Aborting") sys.exit(0) readout_time = obj.get_readout_time() print("EIGER configuration done") print("Starting acquisition (trigmode = %s)" % trigmode) if trigmode == "exts": total_time = nimages * (exptime + readout_time) print("Total exposure time (estimated) will be: %s", total_time) try: obj.start_acquisition() if trigmode == "exts": print(" - waiting for trigger.") sys.stdout.flush() obj.wait_acquire() print(" - trigger received. Acquiring") obj.wait_ready_or_idle() else: obj.trigger() obj.wait_ready_or_idle() obj.stop_acquisition() print("Acquisition done") except KeyboardInterrupt: obj.abort() obj.wait_idle()
def setMnemonic(self, mne): self.getProperty("mnemonic").setValue(mne) proc = HardwareRepository.getHardwareRepository().getProcedure(mne) self.__setProcedure(proc)