def setup(self): #self.add_quickbar(load_qt_ui_file(sibling_path(__file__, 'trpl_quick_access.ui'))) from ScopeFoundryHW.thorlabs_powermeter import ThorlabsPowerMeterHW, PowerMeterOptimizerMeasure self.add_hardware(ThorlabsPowerMeterHW(self)) self.add_measurement(PowerMeterOptimizerMeasure(self)) self.settings_load_ini('uv_defaults.ini')
def setup(self): print("Adding Hardware Components") #from ScopeFoundryHW.apd_counter import APDCounterHW #self.add_hardware_component(APDCounterHW(self)) from ScopeFoundryHW.ni_daq.hw.ni_freq_counter_callback import NI_FreqCounterCallBackHW self.add_hardware(NI_FreqCounterCallBackHW(self, name='apd_counter')) from ScopeFoundryHW.mcl_stage.mcl_xyz_stage import MclXYZStageHW self.add_hardware_component(MclXYZStageHW(self)) from ScopeFoundryHW.picoharp import PicoHarpHW self.add_hardware_component(PicoHarpHW(self)) from ScopeFoundryHW.winspec_remote import WinSpecRemoteClientHW self.add_hardware_component(WinSpecRemoteClientHW(self)) from ScopeFoundryHW.thorlabs_powermeter import ThorlabsPowerMeterHW self.add_hardware_component(ThorlabsPowerMeterHW(self)) #from ScopeFoundryHW.powerwheel_arduino import PowerWheelArduinoHW #self.power_wheel = self.add_hardware_component(PowerWheelArduinoHW(self)) #from ScopeFoundryHW.pololu_servo.single_servo_hw import PololuMaestroServoHW # imports the power wheel #self.add_hardware_component(PololuMaestroServoHW(self))# adds the power wheel from ScopeFoundryHW.newport_esp300 import ESP300AxisHW self.add_hardware(ESP300AxisHW(self)) from ScopeFoundryHW.shutter_servo_arduino.shutter_servo_arduino_hc import ShutterServoHW self.add_hardware(ShutterServoHW(self)) from ScopeFoundryHW.thorlabs_integrated_stepper.thorlabs_integrated_stepper_motor_hw import ThorlabsIntegratedStepperMottorHW self.add_hardware(ThorlabsIntegratedStepperMottorHW(self)) # from ScopeFoundryHW.pololu_servo.single_servo_hw import PololuMaestroServoHW # self.add_hardware(PololuMaestroServoHW(self, name='power_wheel')) #from ScopeFoundryHW.pololu_servo.multi_servo_hw import PololuMaestroHW #self.add_hardware(PololuMaestroHW(self, servo_names=[(1, "power_wheel"), # (2, "polarizer")])) from ScopeFoundryHW.pololu_servo.multi_servo_hw import PololuMaestroHW, PololuMaestroWheelServoHW self.add_hardware(PololuMaestroHW(self, name='pololu_maestro')) self.add_hardware( PololuMaestroWheelServoHW(self, name='power_wheel', channel=1)) self.add_hardware( PololuMaestroWheelServoHW(self, name='excitation_polarizer', channel=2)) #self.add_hardware(PololuMaestroShutterServoHW(self, name='shutter', channel=2)) print("Adding Measurement Components") # hardware specific measurements #from ScopeFoundryHW.apd_counter import APDOptimizerMeasure #self.add_measurement_component(APDOptimizerMeasure(self)) from confocal_measure.apd_optimizer_cb import APDOptimizerCBMeasurement self.add_measurement_component(APDOptimizerCBMeasurement(self)) from ScopeFoundryHW.winspec_remote import WinSpecRemoteReadoutMeasure self.add_measurement_component(WinSpecRemoteReadoutMeasure(self)) from ScopeFoundryHW.thorlabs_powermeter import PowerMeterOptimizerMeasure self.add_measurement_component(PowerMeterOptimizerMeasure(self)) # combined measurements from confocal_measure.power_scan import PowerScanMeasure self.add_measurement_component( PowerScanMeasure(self, 'hardware/shutter_servo/shutter_open')) # Mapping measurements from confocal_measure import APD_MCL_2DSlowScan self.add_measurement_component(APD_MCL_2DSlowScan(self)) from confocal_measure import Picoharp_MCL_2DSlowScan self.add_measurement_component(Picoharp_MCL_2DSlowScan(self)) from confocal_measure import WinSpecMCL2DSlowScan self.add_measurement_component(WinSpecMCL2DSlowScan(self)) from confocal_measure.polarized_hyperspec_scan_measure import PolarizedHyperspecScanMeasure self.add_measurement(PolarizedHyperspecScanMeasure(self)) self.setup_quickbar() # load default settings self.settings_load_ini('df_microscope_defaults.ini')
def setup(self): #Add hardware components from ScopeFoundryHW.mcl_stage import MclXYZStageHW self.add_hardware_component(MclXYZStageHW(self)) from ScopeFoundryHW.acton_spec import ActonSpectrometerHW self.add_hardware_component(ActonSpectrometerHW(self)) from ScopeFoundryHW.picam import PicamHW, PicamReadoutMeasure self.add_hardware_component(PicamHW(self)) self.add_measurement_component(PicamReadoutMeasure(self)) from ScopeFoundryHW.asi_stage.asi_stage_hw import ASIStageHW asi_stage = self.add_hardware(ASIStageHW(self)) from ScopeFoundryHW.asi_stage.asi_stage_control_measure import ASIStageControlMeasure asi_control = self.add_measurement(ASIStageControlMeasure(self)) from ScopeFoundryHW.pololu_servo.single_servo_hw import PololuMaestroServoHW self.add_hardware(PololuMaestroServoHW(self, name='power_wheel')) #from hardware_components.omega_pt_pid_controller import OmegaPtPIDControllerHardware #self.add_hardware_component(OmegaPtPIDControllerHardware(self)) #Add measurement components print("Create Measurement objects") from HiP_microscope.measure.hyperspec_picam_mcl import HyperSpecPicam2DScan, HyperSpecPicam3DStack self.add_measurement(HyperSpecPicam2DScan(self)) #self.add_measurement_component(HiPMicroscopeDualTemperature(self)) self.add_measurement(HyperSpecPicam3DStack(self)) from HiP_microscope.measure.picam_calibration_sweep import PicamCalibrationSweep self.add_measurement(PicamCalibrationSweep(self)) from ScopeFoundryHW.thorlabs_powermeter import ThorlabsPowerMeterHW, PowerMeterOptimizerMeasure self.add_hardware(ThorlabsPowerMeterHW(self)) self.add_measurement(PowerMeterOptimizerMeasure(self)) from ScopeFoundryHW.pygrabber_camera import PyGrabberCameraHW, PyGrabberCameraLiveMeasure self.add_hardware(PyGrabberCameraHW(self)) self.add_measurement(PyGrabberCameraLiveMeasure(self)) from ScopeFoundryHW.toupcam import ToupCamHW, ToupCamLiveMeasure self.add_hardware(ToupCamHW(self)) self.add_measurement(ToupCamLiveMeasure(self)) #set some default logged quantities #self.hardware_components['apd_counter'].debug_mode.update_value(True) #self.hardware_components['apd_counter'].dummy_mode.update_value(True) #self.hardware_components['apd_counter'].connected.update_value(True) ###### Quickbar connections ################################# self.add_quickbar( load_qt_ui_file(sibling_path(__file__, 'hip_quick_access.ui'))) Q = self.quickbar # 2D Scan Area # oo_scan.settings.h0.connect_to_widget(Q.h0_doubleSpinBox) # oo_scan.settings.h1.connect_to_widget(Q.h1_doubleSpinBox) # oo_scan.settings.v0.connect_to_widget(Q.v0_doubleSpinBox) # oo_scan.settings.v1.connect_to_widget(Q.v1_doubleSpinBox) # oo_scan.settings.h_span.connect_to_widget(Q.hspan_doubleSpinBox) # oo_scan.settings.v_span.connect_to_widget(Q.vspan_doubleSpinBox) # Q.center_pushButton.clicked.connect(oo_scan.center_on_pos) # scan_steps = [5e-3, 3e-3, 1e-3, 5e-4] # scan_steps_labels = ['5.0 um','3.0 um','1.0 um','0.5 um'] # Q.scan_step_comboBox.addItems(scan_steps_labels) # def apply_scan_step_value(): # oo_scan.settings.dh.update_value(scan_steps[Q.scan_step_comboBox.currentIndex()]) # oo_scan.settings.dv.update_value(scan_steps[Q.scan_step_comboBox.currentIndex()]) # Q.scan_step_comboBox.currentIndexChanged.connect(apply_scan_step_value) # MCL Stage mcl = self.hardware['mcl_xyz_stage'] mcl.settings.x_position.connect_to_widget(Q.mcl_x_pos_doubleSpinBox) mcl.settings.y_position.connect_to_widget(Q.mcl_y_pos_doubleSpinBox) mcl.settings.z_position.connect_to_widget(Q.mcl_z_pos_doubleSpinBox) mcl.settings.x_target.connect_to_widget(Q.mcl_x_target_doubleSpinBox) mcl.settings.y_target.connect_to_widget(Q.mcl_y_target_doubleSpinBox) mcl.settings.z_target.connect_to_widget(Q.mcl_z_target_doubleSpinBox) mcl.settings.connected.connect_to_widget(Q.mcl_connect_checkBox) # ASI Stage asi_stage.settings.x_position.connect_to_widget(Q.x_pos_doubleSpinBox) Q.x_up_pushButton.clicked.connect(asi_control.x_up) Q.x_down_pushButton.clicked.connect(asi_control.x_down) asi_stage.settings.y_position.connect_to_widget(Q.y_pos_doubleSpinBox) Q.y_up_pushButton.clicked.connect(asi_control.y_up) Q.y_down_pushButton.clicked.connect(asi_control.y_down) # asi_stage.settings.z_position.connect_to_widget(Q.z_pos_doubleSpinBox) # Q.z_up_pushButton.clicked.connect(asi_control.z_up) # Q.z_down_pushButton.clicked.connect(asi_control.z_down) asi_control.settings.jog_step_xy.connect_to_widget( Q.xy_step_doubleSpinBox) # asi_control.settings.jog_step_z.connect_to_widget(Q.z_step_doubleSpinBox) stage_steps = np.array([5e-4, 1e-3, 1e-2, 1e-1, 1e0]) stage_steps_labels = [ '0.0005 mm', '0.001 mm', '0.010 mm', '0.100 mm', '1.000 mm' ] Q.xy_step_comboBox.addItems(stage_steps_labels) # Q.z_step_comboBox.addItems(stage_steps_labels) def apply_xy_step_value(): asi_control.settings.jog_step_xy.update_value( stage_steps[Q.xy_step_comboBox.currentIndex()]) Q.xy_step_comboBox.currentIndexChanged.connect(apply_xy_step_value) def apply_z_step_value(): asi_control.settings.jog_step_z.update_value( stage_steps[Q.z_step_comboBox.currentIndex()]) #Q.z_step_comboBox.currentIndexChanged.connect(apply_z_step_value) def halt_stage_motion(): asi_stage.halt_xy() asi_stage.halt_z() Q.stop_stage_pushButton.clicked.connect(halt_stage_motion) asi_stage.settings.x_target.connect_to_widget( Q.asi_x_target_doubleSpinBox) asi_stage.settings.y_target.connect_to_widget( Q.asi_y_target_doubleSpinBox) #Q.asi_xy_target_groupBox.toggled.connect(Q.asi_xy_target_groupBox.setEnabled) # Power Wheel #pw = self.hardware['power_wheel_arduino'] pw = self.hardware['power_wheel'] pw.settings.position.connect_to_widget( Q.power_wheel_encoder_pos_doubleSpinBox) pw.settings.jog_step.connect_to_widget( Q.powerwheel_move_steps_doubleSpinBox) Q.powerwheel_move_fwd_pushButton.clicked.connect(pw.jog_fwd) Q.powerwheel_move_bkwd_pushButton.clicked.connect(pw.jog_bkwd) # Picam picam = self.hardware['picam'] picam.settings.ccd_status.connect_to_widget(Q.andor_ccd_status_label) picam.settings.SensorTemperatureReading.connect_to_widget( Q.andor_ccd_temp_doubleSpinBox) picam.settings.ExposureTime.connect_to_widget( Q.andor_ccd_int_time_doubleSpinBox) # Spectrometer aspec = self.hardware['acton_spectrometer'] aspec.settings.center_wl.connect_to_widget( Q.acton_spec_center_wl_doubleSpinBox) aspec.settings.exit_mirror.connect_to_widget( Q.acton_spec_exitmirror_comboBox) aspec.settings.grating_name.connect_to_widget( Q.acton_spec_grating_lineEdit) # power meter pm = self.hardware['thorlabs_powermeter'] pm.settings.wavelength.connect_to_widget( Q.power_meter_wl_doubleSpinBox) pm.settings.power.connect_to_widget(Q.power_meter_power_label) pm_opt = self.measurements['powermeter_optimizer'] pm_opt.settings.activation.connect_to_widget( Q.power_meter_acquire_cont_checkBox) # load default settings from file self.settings_load_ini("hip_settings.ini")
def setup(self): # - renamed libiomp5md.dll to libiomp5md.dll.bak in Spinnaker self.add_quickbar( load_qt_ui_file(sibling_path(__file__, 'uv_quick_access.ui'))) #### HARDWARE from ScopeFoundryHW.asi_stage import ASIStageHW asi_stage = self.add_hardware( ASIStageHW(self, swap_xy=False, invert_x=False, invert_y=True)) from ScopeFoundryHW.oceanoptics_spec import OceanOpticsSpectrometerHW oo_spec = self.add_hardware(OceanOpticsSpectrometerHW(self)) from ScopeFoundryHW.flircam import FlirCamHW flircamhw = self.add_hardware(FlirCamHW(self)) from ScopeFoundryHW.thorlabs_dc4100 import ThorlabsDC4100HW led_ctrl = self.add_hardware(ThorlabsDC4100HW(self)) from ScopeFoundryHW.andor_camera import AndorCCDHW self.add_hardware(AndorCCDHW(self)) from ScopeFoundryHW.andor_spec.andor_spec_hw import AndorShamrockSpecHW self.add_hardware(AndorShamrockSpecHW(self)) from ScopeFoundryHW.lakeshore_331 import Lakeshore331HW self.add_hardware(Lakeshore331HW(self)) from ScopeFoundryHW.pygrabber_camera import PyGrabberCameraHW pygrabhw = self.add_hardware(PyGrabberCameraHW(self)) from ScopeFoundryHW.thorlabs_powermeter import ThorlabsPowerMeterHW self.add_hardware(ThorlabsPowerMeterHW(self)) #### MEASUREMENTS from ScopeFoundryHW.flircam import FlirCamLiveMeasure flircam = self.add_measurement(FlirCamLiveMeasure(self)) from ScopeFoundryHW.pygrabber_camera import PyGrabberCameraLiveMeasure pygrab = self.add_measurement(PyGrabberCameraLiveMeasure(self)) from ScopeFoundryHW.asi_stage import ASIStageControlMeasure, ASIStagePositionList asi_control = self.add_measurement(ASIStageControlMeasure(self)) self.add_measurement(ASIStagePositionList(self)) from ScopeFoundryHW.oceanoptics_spec import OOSpecLive, OOSpecOptimizerMeasure oo_spec_measure = self.add_measurement(OOSpecLive(self)) oo_spec_opt = self.add_measurement(OOSpecOptimizerMeasure(self)) from confocal_measure.oceanoptics_asi_hyperspec_scan import OceanOpticsAsiHyperSpec2DScan, OceanOpticsAsiHyperSpec3DScan oo_scan = self.add_measurement(OceanOpticsAsiHyperSpec2DScan(self)) self.add_measurement(OceanOpticsAsiHyperSpec3DScan(self)) from ScopeFoundryHW.andor_camera import AndorCCDReadoutMeasure, AndorSpecCalibMeasure, AndorCCDStepAndGlue self.add_measurement(AndorCCDReadoutMeasure) self.add_measurement(AndorCCDStepAndGlue) self.add_measurement(AndorSpecCalibMeasure) from confocal_measure.andor_asi_hyperspec_scan import AndorAsiHyperSpec2DScan andor_scan = self.add_measurement(AndorAsiHyperSpec2DScan(self)) from ScopeFoundryHW.lakeshore_331 import LakeshoreMeasure self.add_measurement(LakeshoreMeasure(self)) from ScopeFoundryHW.thorlabs_powermeter import PowerMeterOptimizerMeasure self.add_measurement(PowerMeterOptimizerMeasure(self)) ###### Quickbar connections ################################# Q = self.quickbar # 2D Scan Area - Ocean Optics oo_scan.settings.h_span.connect_to_widget( Q.oo_scan_hspan_doubleSpinBox) oo_scan.settings.v_span.connect_to_widget( Q.oo_scan_vspan_doubleSpinBox) oo_scan.settings.save_h5.connect_to_widget(Q.oo_scan_save_h5_checkBox) Q.oo_scan_center_pushButton.clicked.connect(oo_scan.center_scan_on_pos) Q.oo_scan_center_view_pushButton.clicked.connect( oo_scan.center_view_on_scan) Q.oo_scan_start_pushButton.clicked.connect(oo_scan.operations['start']) Q.oo_scan_interrupt_pushButton.clicked.connect( oo_scan.operations['interrupt']) Q.oo_scan_show_UI_pushButton.clicked.connect( oo_scan.operations['show_ui']) scan_steps = [5e-3, 3e-3, 1e-3, 5e-4] scan_steps_labels = ['5.0 um', '3.0 um', '1.0 um', '0.5 um'] Q.oo_scan_step_comboBox.addItems(scan_steps_labels) def apply_oo_scan_step_value(): oo_scan.settings.dh.update_value( scan_steps[Q.oo_scan_step_comboBox.currentIndex()]) oo_scan.settings.dv.update_value( scan_steps[Q.oo_scan_step_comboBox.currentIndex()]) Q.oo_scan_step_comboBox.currentIndexChanged.connect( apply_oo_scan_step_value) oo_scan.settings.dh.connect_to_widget(Q.oo_scan_step_doubleSpinBox) # 2D Scan Area - Andor andor_scan.settings.h_span.connect_to_widget( Q.andor_scan_hspan_doubleSpinBox) andor_scan.settings.v_span.connect_to_widget( Q.andor_scan_vspan_doubleSpinBox) andor_scan.settings.save_h5.connect_to_widget( Q.andor_scan_save_h5_checkBox) Q.andor_scan_center_pushButton.clicked.connect( andor_scan.center_scan_on_pos) Q.andor_scan_center_view_pushButton.clicked.connect( andor_scan.center_view_on_scan) Q.andor_scan_start_pushButton.clicked.connect( andor_scan.operations['start']) Q.andor_scan_interrupt_pushButton.clicked.connect( andor_scan.operations['interrupt']) Q.andor_scan_show_UI_pushButton.clicked.connect( andor_scan.operations['show_ui']) scan_steps = [5e-3, 3e-3, 1e-3, 5e-4] scan_steps_labels = ['5.0 um', '3.0 um', '1.0 um', '0.5 um'] Q.andor_scan_step_comboBox.addItems(scan_steps_labels) def apply_andor_scan_step_value(): andor_scan.settings.dh.update_value( scan_steps[Q.andor_scan_step_comboBox.currentIndex()]) andor_scan.settings.dv.update_value( scan_steps[Q.andor_scan_step_comboBox.currentIndex()]) Q.andor_scan_step_comboBox.currentIndexChanged.connect( apply_andor_scan_step_value) andor_scan.settings.dh.connect_to_widget( Q.andor_scan_step_doubleSpinBox) # ASI Stage asi_stage.settings.x_position.connect_to_widget(Q.x_pos_doubleSpinBox) Q.x_up_pushButton.clicked.connect(asi_control.x_up) Q.x_down_pushButton.clicked.connect(asi_control.x_down) asi_stage.settings.y_position.connect_to_widget(Q.y_pos_doubleSpinBox) Q.y_up_pushButton.clicked.connect(asi_control.y_up) Q.y_down_pushButton.clicked.connect(asi_control.y_down) asi_stage.settings.z_position.connect_to_widget(Q.z_pos_doubleSpinBox) Q.z_up_pushButton.clicked.connect(asi_control.z_up) Q.z_down_pushButton.clicked.connect(asi_control.z_down) asi_control.settings.jog_step_xy.connect_to_widget( Q.xy_step_doubleSpinBox) asi_control.settings.jog_step_z.connect_to_widget( Q.z_step_doubleSpinBox) stage_steps = np.array([5e-4, 1e-3, 1e-2, 1e-1, 1e0]) stage_steps_labels = [ '0.0005 mm', '0.001 mm', '0.010 mm', '0.100 mm', '1.000 mm' ] Q.xy_step_comboBox.addItems(stage_steps_labels) Q.z_step_comboBox.addItems(stage_steps_labels) def apply_xy_step_value(): asi_control.settings.jog_step_xy.update_value( stage_steps[Q.xy_step_comboBox.currentIndex()]) Q.xy_step_comboBox.currentIndexChanged.connect(apply_xy_step_value) def apply_z_step_value(): asi_control.settings.jog_step_z.update_value( stage_steps[Q.z_step_comboBox.currentIndex()]) Q.z_step_comboBox.currentIndexChanged.connect(apply_z_step_value) def halt_stage_motion(): asi_stage.halt_xy() asi_stage.halt_z() Q.stop_stage_pushButton.clicked.connect(halt_stage_motion) # OO Spectrometer oo_spec.settings.int_time.connect_to_widget( Q.oo_spec_int_time_doubleSpinBox) oo_spec_measure.settings.continuous.connect_to_widget( Q.oo_spec_acquire_cont_checkBox) Q.oo_spec_set_bg_pushButton.clicked.connect( oo_spec_measure.set_current_spec_as_bg) Q.oo_spec_save_pushButton.clicked.connect(oo_spec_measure.save_data) Q.oo_spec_startstop_pushButton.clicked.connect( oo_spec_measure.start_stop) # OO Spectrometer Optimizer oo_spec_opt.settings.power_reading.connect_to_widget( Q.power_meter_power_label) oo_spec_opt.settings.activation.connect_to_widget( Q.power_meter_acquire_cont_checkBox) # Flircam flircam.settings.activation.connect_to_widget(Q.flircam_live_checkBox) flircam.settings.auto_level.connect_to_widget( Q.flircam_autolevel_checkBox) flircamhw.settings.exposure.connect_to_widget( Q.flircam_int_time_doubleSpinBox) Q.flircam_auto_exp_comboBox.addItems(["Off", "Once", "Continuous"]) Q.flircam_auto_exp_comboBox.setCurrentIndex(2) def apply_auto_exposure_index(): flircam.ui.auto_exposure_comboBox.setCurrentIndex( Q.flircam_auto_exp_comboBox.currentIndex()) Q.flircam_auto_exp_comboBox.currentIndexChanged.connect( apply_auto_exposure_index) self.imlayout = QVBoxLayout() def switch_camera_view(): self.imlayout.addWidget(flircam.imview) flircam.imview.show() Q.flircam_show_pushButton.clicked.connect(switch_camera_view) Q.groupBox_image.setLayout(self.imlayout) # Thorlabs DC4100 LED controller led_ctrl.settings.LED1.connect_to_widget(Q.led1_checkBox) led_ctrl.settings.get_lq('LED1 wavelength').connect_to_widget( Q.led1_lineEdit) led_ctrl.settings.get_lq('LED1 brightness').connect_to_widget( Q.led1_doubleSpinBox) led_ctrl.settings.get_lq('LED1 brightness').connect_to_widget( Q.led1_horizontalSlider) led_ctrl.settings.LED2.connect_to_widget(Q.led2_checkBox) led_ctrl.settings.get_lq('LED2 wavelength').connect_to_widget( Q.led2_lineEdit) led_ctrl.settings.get_lq('LED2 brightness').connect_to_widget( Q.led2_doubleSpinBox) led_ctrl.settings.get_lq('LED2 brightness').connect_to_widget( Q.led2_horizontalSlider) # Pygrabber pygrabhw.settings.connected.connect_to_widget( Q.pygrabber_connect_checkBox) pygrab.settings.activation.connect_to_widget( Q.pygrabber_acquire_checkBox) Q.pygrabber_show_ui_pushButton.clicked.connect( pygrab.operations['show_ui']) # Spectrometer aspec = self.hardware['andor_spec'] aspec.settings.center_wl.connect_to_widget( Q.andor_spec_center_wl_doubleSpinBox) #aspec.settings.exit_mirror.connect_to_widget(Q.acton_spec_exitmirror_comboBox) aspec.settings.grating_name.connect_to_widget( Q.andor_spec_grating_lineEdit) # Andor CCD andor = self.hardware['andor_ccd'] andor.settings.exposure_time.connect_to_widget( Q.andor_ccd_int_time_doubleSpinBox) andor.settings.em_gain.connect_to_widget( Q.andor_ccd_emgain_doubleSpinBox) andor.settings.temperature.connect_to_widget( Q.andor_ccd_temp_doubleSpinBox) andor.settings.ccd_status.connect_to_widget(Q.andor_ccd_status_label) andor.settings.shutter_open.connect_to_widget( Q.andor_ccd_shutter_open_checkBox) andor.settings.output_amp.connect_to_widget( Q.andor_ccd_output_amp_comboBox) # Andor Readout aro = self.measurements['andor_ccd_readout'] aro.settings.bg_subtract.connect_to_widget(Q.andor_ccd_bgsub_checkBox) Q.andor_ccd_acquire_cont_checkBox.stateChanged.connect(aro.start_stop) Q.andor_ccd_acq_bg_pushButton.clicked.connect(aro.acquire_bg_start) Q.andor_ccd_read_single_pushButton.clicked.connect( aro.acquire_single_start) self.settings_load_ini('uv_defaults.ini')
def setup(self): self.add_quickbar(load_qt_ui_file(sibling_path(__file__, 'trpl_quick_access.ui'))) print("Adding Hardware Components") from ScopeFoundryHW.picoharp import PicoHarpHW self.add_hardware(PicoHarpHW(self)) #from ScopeFoundryHW.apd_counter import APDCounterHW, APDOptimizerMeasure #self.add_hardware(APDCounterHW(self)) #self.add_measurement(APDOptimizerMeasure(self)) from ScopeFoundryHW.ni_daq.hw.ni_freq_counter_callback import NI_FreqCounterCallBackHW self.add_hardware(NI_FreqCounterCallBackHW(self, name='apd_counter')) from confocal_measure.apd_optimizer_cb import APDOptimizerCBMeasurement self.add_measurement_component(APDOptimizerCBMeasurement(self)) from ScopeFoundryHW.andor_camera import AndorCCDHW, AndorCCDReadoutMeasure self.add_hardware(AndorCCDHW(self)) self.add_measurement(AndorCCDReadoutMeasure) #from ScopeFoundryHW.acton_spec import ActonSpectrometerHW #self.add_hardware(ActonSpectrometerHW(self)) from ScopeFoundryHW.andor_spec.andor_spec_hw import AndorShamrockSpecHW self.add_hardware(AndorShamrockSpecHW(self)) from ScopeFoundryHW.flip_mirror_arduino import FlipMirrorHW self.add_hardware(FlipMirrorHW(self)) from ScopeFoundryHW.thorlabs_powermeter import ThorlabsPowerMeterHW, PowerMeterOptimizerMeasure self.add_hardware(ThorlabsPowerMeterHW(self)) self.add_measurement(PowerMeterOptimizerMeasure(self)) #self.thorlabs_powermeter_analog_readout_hc = self.add_hardware_component(ThorlabsPowerMeterAnalogReadOut(self)) from ScopeFoundryHW.mcl_stage.mcl_xyz_stage import MclXYZStageHW self.add_hardware(MclXYZStageHW(self)) from ScopeFoundryHW.keithley_sourcemeter.keithley_sourcemeter_hc import KeithleySourceMeterComponent self.add_hardware(KeithleySourceMeterComponent(self)) #self.srs_lockin_hc = self.add_hardware_component(SRSLockinComponent(self)) #self.thorlabs_optical_chopper_hc = self.add_hardware_component(ThorlabsOpticalChopperComponent(self)) #from ScopeFoundryHW.powerwheel_arduino import PowerWheelArduinoHW #self.power_wheel = self.add_hardware_component(PowerWheelArduinoHW(self)) from ScopeFoundryHW.pololu_servo.single_servo_hw import PololuMaestroServoHW self.add_hardware(PololuMaestroServoHW(self, name='power_wheel')) from ScopeFoundryHW.oceanoptics_spec.oceanoptics_spec import OceanOpticsSpectrometerHW self.add_hardware_component(OceanOpticsSpectrometerHW(self)) #self.crystaltech_aotf_hc = self.add_hardware_component(CrystalTechAOTF(self)) from ScopeFoundryHW.shutter_servo_arduino.shutter_servo_arduino_hc import ShutterServoHW self.add_hardware(ShutterServoHW(self)) from ScopeFoundryHW.dli_powerswitch import DLIPowerSwitchHW self.add_hardware(DLIPowerSwitchHW(self)) from ScopeFoundryHW.quantum_composer import QuantumComposerHW self.add_hardware(QuantumComposerHW(self)) from ScopeFoundryHW.toupcam import ToupCamHW, ToupCamLiveMeasure self.add_hardware_component(ToupCamHW(self)) self.add_measurement(ToupCamLiveMeasure(self)) from ScopeFoundryHW.powermate.powermate_hw import PowermateHW self.add_hardware(PowermateHW(self)) from ScopeFoundryHW.asi_stage import ASIStageHW, ASIStageControlMeasure self.add_hardware(ASIStageHW(self)) # sample stage self.add_hardware(ASIStageHW(self, name='fiber_stage')) self.add_measurement(ASIStageControlMeasure(self)) self.add_measurement(ASIStageControlMeasure(self,name='Fiber_Stage_Control', hw_name='fiber_stage')) from xbox_trpl_measure import XboxControllerTRPLMeasure from ScopeFoundryHW.xbox_controller.xbox_controller_hw import XboxControllerHW self.add_hardware(XboxControllerHW(self)) self.add_measurement(XboxControllerTRPLMeasure(self)) from ScopeFoundryHW.crystaltech_aotf.crystaltech_aotf_hc import CrystalTechAOTF self.add_hardware(CrystalTechAOTF(self)) from ScopeFoundryHW.linkam_thermal_stage.linkam_temperature_controller import LinkamControllerHC self.add_hardware(LinkamControllerHC(self)) ########################## MEASUREMENTS print("Adding Measurement Components") # hardware specific measurements from ScopeFoundryHW.picoharp.picoharp_hist_measure import PicoHarpHistogramMeasure self.add_measurement(PicoHarpHistogramMeasure(self)) from ScopeFoundryHW.oceanoptics_spec.oo_spec_measure import OOSpecLive self.add_measurement(OOSpecLive(self)) powermate_lq_choices = [ 'hardware/asi_stage/x_target', 'hardware/asi_stage/y_target', '', ] from ScopeFoundryHW.powermate.powermate_measure import PowermateMeasure self.add_measurement(PowermateMeasure(self, n_devs=2, dev_lq_choices=powermate_lq_choices)) # Combined Measurements from confocal_measure.power_scan import PowerScanMeasure self.add_measurement_component(PowerScanMeasure(self)) # Current Measurements from ScopeFoundryHW.keithley_sourcemeter.photocurrent_iv import PhotocurrentIVMeasurement self.add_measurement(PhotocurrentIVMeasurement(self)) # Mapping Measurements from confocal_measure.apd_mcl_2dslowscan import APD_MCL_2DSlowScan, APD_MCL_3DSlowScan apd_scan = self.add_measurement(APD_MCL_2DSlowScan(self)) self.add_measurement(APD_MCL_3DSlowScan(self)) from confocal_measure import Picoharp_MCL_2DSlowScan picoharp_scan = self.add_measurement(Picoharp_MCL_2DSlowScan(self)) from confocal_measure.andor_hyperspec_scan import AndorHyperSpec2DScan andor_scan = self.add_measurement(AndorHyperSpec2DScan(self)) # connect mapping measurement settings lq_names = ['h0', 'h1', 'v0', 'v1', 'Nh', 'Nv', 'h_axis', 'v_axis'] for scan in [picoharp_scan, andor_scan]: for lq_name in lq_names: master_scan_lq = apd_scan.settings.get_lq(lq_name) scan.settings.get_lq(lq_name).connect_to_lq(master_scan_lq) from trpl_microscope.step_and_glue_spec_measure import SpecStepAndGlue self.add_measurement(SpecStepAndGlue(self)) from confocal_measure.apd_asi_2dslowscan import APD_ASI_2DSlowScan apd_asi = self.add_measurement(APD_ASI_2DSlowScan(self)) from confocal_measure.asi_hyperspec_scan import AndorHyperSpecASIScan hyperspec_asi = self.add_measurement(AndorHyperSpecASIScan(self)) from confocal_measure.tiled_large_area_map import TiledLargeAreaMapMeasure self.add_measurement(TiledLargeAreaMapMeasure(self)) # connect mapping measurement settings lq_names = ['h0', 'h1', 'v0', 'v1', 'Nh', 'Nv'] for scan in [apd_asi, hyperspec_asi]: for lq_name in lq_names: master_scan_lq = apd_asi.settings.get_lq(lq_name) scan.settings.get_lq(lq_name).connect_to_lq(master_scan_lq) ####### Quickbar connections ################################# Q = self.quickbar # 2D Scan Area apd_scan.settings.h0.connect_to_widget(Q.h0_doubleSpinBox) apd_scan.settings.h1.connect_to_widget(Q.h1_doubleSpinBox) apd_scan.settings.v0.connect_to_widget(Q.v0_doubleSpinBox) apd_scan.settings.v1.connect_to_widget(Q.v1_doubleSpinBox) apd_scan.settings.dh.connect_to_widget(Q.dh_doubleSpinBox) apd_scan.settings.dv.connect_to_widget(Q.dv_doubleSpinBox) apd_scan.settings.h_axis.connect_to_widget(Q.h_axis_comboBox) apd_scan.settings.v_axis.connect_to_widget(Q.v_axis_comboBox) # MadCity Labs mcl = self.hardware['mcl_xyz_stage'] mcl.settings.x_position.connect_to_widget(Q.cx_doubleSpinBox) Q.x_set_lineEdit.returnPressed.connect(mcl.settings.x_target.update_value) Q.x_set_lineEdit.returnPressed.connect(lambda: Q.x_set_lineEdit.setText("")) mcl.settings.y_position.connect_to_widget(Q.cy_doubleSpinBox) Q.y_set_lineEdit.returnPressed.connect(mcl.settings.y_target.update_value) Q.y_set_lineEdit.returnPressed.connect(lambda: Q.y_set_lineEdit.setText("")) mcl.settings.z_position.connect_to_widget(Q.cz_doubleSpinBox) Q.z_set_lineEdit.returnPressed.connect(mcl.settings.z_target.update_value) Q.z_set_lineEdit.returnPressed.connect(lambda: Q.z_set_lineEdit.setText("")) mcl.settings.move_speed.connect_to_widget(Q.nanodrive_move_slow_doubleSpinBox) # Power Wheel #pw = self.hardware['power_wheel_arduino'] pw = self.hardware['power_wheel'] pw.settings.position.connect_to_widget(Q.power_wheel_encoder_pos_doubleSpinBox) pw.settings.jog_step.connect_to_widget(Q.powerwheel_move_steps_doubleSpinBox) Q.powerwheel_move_fwd_pushButton.clicked.connect(pw.jog_fwd) Q.powerwheel_move_bkwd_pushButton.clicked.connect(pw.jog_bkwd) #connect events apd = self.hardware['apd_counter'] apd.settings.int_time.connect_to_widget(Q.apd_counter_int_doubleSpinBox) #apd.settings.count_rate.updated_text_value.connect( # Q.apd_counter_output_lineEdit.setText) apd.settings.count_rate.connect_to_widget(Q.apd_counter_output_lineEdit) apd_opt = self.measurements['apd_optimizer'] #apd.settings apd_opt.settings.activation.connect_to_widget(Q.apd_optimize_startstop_checkBox) #self.measurement_state_changed[bool].connect(self.gui.ui.apd_optimize_startstop_checkBox.setChecked) # Spectrometer aspec = self.hardware['andor_spec'] aspec.settings.center_wl.connect_to_widget(Q.acton_spec_center_wl_doubleSpinBox) #aspec.settings.exit_mirror.connect_to_widget(Q.acton_spec_exitmirror_comboBox) aspec.settings.grating_name.connect_to_widget(Q.acton_spec_grating_lineEdit) # Andor CCD andor = self.hardware['andor_ccd'] andor.settings.exposure_time.connect_to_widget(Q.andor_ccd_int_time_doubleSpinBox) andor.settings.em_gain.connect_to_widget(Q.andor_ccd_emgain_doubleSpinBox) andor.settings.temperature.connect_to_widget(Q.andor_ccd_temp_doubleSpinBox) andor.settings.ccd_status.connect_to_widget(Q.andor_ccd_status_label) andor.settings.shutter_open.connect_to_widget(Q.andor_ccd_shutter_open_checkBox) andor.settings.output_amp.connect_to_widget(Q.andor_ccd_output_amp_comboBox) # Andor Readout aro = self.measurements['andor_ccd_readout'] aro.settings.bg_subtract.connect_to_widget(Q.andor_ccd_bgsub_checkBox) Q.andor_ccd_acquire_cont_checkBox.stateChanged.connect(aro.start_stop) Q.andor_ccd_acq_bg_pushButton.clicked.connect(aro.acquire_bg_start) Q.andor_ccd_read_single_pushButton.clicked.connect(aro.acquire_single_start) # power meter pm = self.hardware['thorlabs_powermeter'] pm.settings.wavelength.connect_to_widget(Q.power_meter_wl_doubleSpinBox) pm.settings.power.connect_to_widget(Q.power_meter_power_label) pm_opt = self.measurements['powermeter_optimizer'] pm_opt.settings.activation.connect_to_widget(Q.power_meter_acquire_cont_checkBox) shutter = self.hardware['shutter_servo'] shutter.settings.shutter_open.connect_to_widget(Q.shutter_open_checkBox) self.hardware['flip_mirror'].settings.mirror_position.connect_to_widget(Q.flip_mirror_checkBox) # AOTF aotf_hw = self.hardware['CrystalTechAOTF_DDS'] aotf_hw.settings.freq0.connect_to_widget(Q.atof_freq_doubleSpinBox) aotf_hw.settings.pwr0.connect_to_widget(Q.aotf_power_doubleSpinBox) aotf_hw.settings.modulation_enable.connect_to_widget(Q.aotf_mod_enable_checkBox) ################# Shared Settings for Map Measurements ######################## ############ #Color scheme # # from qtpy.QtGui import QPalette, QColor # from qtpy.QtCore import Qt # # # Now use a palette to switch to dark colors: # palette = QPalette() # palette.setColor(QPalette.Window, QColor(53, 53, 53)) # palette.setColor(QPalette.WindowText, Qt.white) # palette.setColor(QPalette.Base, QColor(25, 25, 25)) # palette.setColor(QPalette.AlternateBase, QColor(53, 53, 53)) # palette.setColor(QPalette.ToolTipBase, Qt.white) # palette.setColor(QPalette.ToolTipText, Qt.white) # palette.setColor(QPalette.Text, Qt.white) # palette.setColor(QPalette.Button, QColor(53, 53, 53)) # palette.setColor(QPalette.ButtonText, Qt.white) # palette.setColor(QPalette.BrightText, Qt.red) # palette.setColor(QPalette.Link, QColor(42, 130, 218)) # palette.setColor(QPalette.Highlight, QColor(42, 130, 218)) # palette.setColor(QPalette.HighlightedText, Qt.black) # self.qtapp.setPalette(palette) ########## self.settings_load_ini('trpl_defaults.ini')
def setup(self): #Add hardware components print("Adding Hardware Components") #from ScopeFoundryHW.apd_counter.apd_counter import APDCounterHW #self.add_hardware_component(APDCounterHW(self)) from ScopeFoundryHW.ni_daq.hw.ni_freq_counter_callback import NI_FreqCounterCallBackHW self.add_hardware(NI_FreqCounterCallBackHW(self, name='apd_counter')) from ScopeFoundryHW.mcl_stage.mcl_xyz_stage import MclXYZStageHW self.add_hardware_component(MclXYZStageHW(self)) #self.add_hardware_component(SEMSlowscanVoutStage(self)) from ScopeFoundryHW.picoharp import PicoHarpHW self.add_hardware_component(PicoHarpHW(self)) from ScopeFoundryHW.winspec_remote import WinSpecRemoteClientHW self.add_hardware_component(WinSpecRemoteClientHW(self)) from ScopeFoundryHW.ascom_camera import ASCOMCameraHW self.add_hardware_component(ASCOMCameraHW(self)) from ScopeFoundryHW.powerwheel_arduino import PowerWheelArduinoHW self.add_hardware_component(PowerWheelArduinoHW(self)) from ScopeFoundryHW.pololu_servo.single_servo_hw import PololuMaestroServoHW self.add_hardware(PololuMaestroServoHW(self, name='power_wheel')) from ScopeFoundryHW.thorlabs_powermeter import ThorlabsPowerMeterHW self.add_hardware_component(ThorlabsPowerMeterHW(self)) # from ScopeFoundryHW.attocube_ecc100 import AttoCubeXYZStageHW # self.add_hardware_component(AttoCubeXYZStageHW(self)) # from ScopeFoundryHW.newport_esp300 import ESP300AxisHW # self.add_hardware_component(ESP300AxisHW(self)) from ScopeFoundryHW.thorlabs_stepper_motors import ThorlabsStepperControllerHW self.add_hardware_component(ThorlabsStepperControllerHW) from ScopeFoundryHW.ni_daq.hw.ni_digital_out import NIDigitalOutHW self.add_hardware( NIDigitalOutHW( self, name='flip_mirrors', line_names=['apd_flip', '_', '_', '_', '_', '_', '_', '_'])) #from ScopeFoundryHW.shutter_servo_arduino.shutter_servo_arduino_hc import ShutterServoHW #self.add_hardware(ShutterServoHW(self)) from ScopeFoundryHW.thorlabs_elliptec.elliptec_hw import ThorlabsElliptecSingleHW self.add_hardware( ThorlabsElliptecSingleHW(self, name='collection_filter', named_positions=OrderedDict( (('PL', 0.0), ('Laser', 31.0), ('C_open', 62.), ('D_open', 93.))))) self.add_hardware( ThorlabsElliptecSingleHW(self, name='laser_in_shutter', named_positions=OrderedDict( (('closed', 1.0), ('open', 24.0))))) #Add measurement components print("Create Measurement objects") # hardware specific measurements #from ScopeFoundryHW.apd_counter import APDOptimizerMeasure #self.add_measurement_component(APDOptimizerMeasure(self)) from confocal_measure.apd_optimizer_cb import APDOptimizerCBMeasurement self.add_measurement_component(APDOptimizerCBMeasurement(self)) from ScopeFoundryHW.ascom_camera import ASCOMCameraCaptureMeasure self.add_measurement_component(ASCOMCameraCaptureMeasure(self)) from ScopeFoundryHW.winspec_remote import WinSpecRemoteReadoutMeasure self.add_measurement_component(WinSpecRemoteReadoutMeasure(self)) from ScopeFoundryHW.thorlabs_powermeter import PowerMeterOptimizerMeasure self.add_measurement_component(PowerMeterOptimizerMeasure(self)) from ScopeFoundryHW.picoharp.picoharp_hist_measure import PicoHarpHistogramMeasure self.add_measurement(PicoHarpHistogramMeasure(self)) # combined measurements from confocal_measure.power_scan import PowerScanMeasure self.add_measurement_component(PowerScanMeasure(self)) # Mapping measurements from ScopeFoundryHW.mcl_stage.mcl_stage_slowscan import Delay_MCL_2DSlowScan self.add_measurement(Delay_MCL_2DSlowScan(self)) from confocal_measure import APD_MCL_2DSlowScan self.add_measurement_component(APD_MCL_2DSlowScan(self)) from confocal_measure import Picoharp_MCL_2DSlowScan self.add_measurement_component(Picoharp_MCL_2DSlowScan(self)) from confocal_measure import WinSpecMCL2DSlowScan self.add_measurement_component(WinSpecMCL2DSlowScan(self)) # from ScopeFoundryHW.attocube_ecc100.attocube_stage_control import AttoCubeStageControlMeasure # self.add_measurement(AttoCubeStageControlMeasure(self)) # # from ScopeFoundryHW.attocube_ecc100.attocube_slowscan import AttoCube2DSlowScan # self.add_measurement(AttoCube2DSlowScan(self)) from plimg_microscope import fiber_scan self.add_measurement(fiber_scan.FiberPowerMeterScan(self)) self.add_measurement(fiber_scan.FiberAPDScan(self)) self.add_measurement(fiber_scan.FiberPicoharpScan(self)) self.add_measurement(fiber_scan.FiberWinSpecScan(self)) from ScopeFoundryHW.dli_powerswitch import DLIPowerSwitchHW self.add_hardware(DLIPowerSwitchHW(self)) from plimg_microscope.auto_focus_measure import AutoFocusMeasure self.add_measurement(AutoFocusMeasure(self)) from plimg_microscope.power_scan_maps import PowerScanMapMeasurement self.add_measurement(PowerScanMapMeasurement(self)) from plimg_microscope.laser_line_writer import LaserLineWriter self.add_measurement(LaserLineWriter(self)) #set some default logged quantities # #Add additional app-wide logged quantities # ####### Quickbar connections ################################# self.add_quickbar( load_qt_ui_file(sibling_path(__file__, 'm3_quick_access.ui'))) Q = self.quickbar # 2D Scan Area Q.groupBox_scanarea.hide() # temporarily hide # apd_scan.settings.h0.connect_to_widget(Q.h0_doubleSpinBox) # apd_scan.settings.h1.connect_to_widget(Q.h1_doubleSpinBox) # apd_scan.settings.v0.connect_to_widget(Q.v0_doubleSpinBox) # apd_scan.settings.v1.connect_to_widget(Q.v1_doubleSpinBox) # apd_scan.settings.dh.connect_to_widget(Q.dh_doubleSpinBox) # apd_scan.settings.dv.connect_to_widget(Q.dv_doubleSpinBox) # apd_scan.settings.h_axis.connect_to_widget(Q.h_axis_comboBox) # apd_scan.settings.v_axis.connect_to_widget(Q.v_axis_comboBox) # MadCity Labs mcl = self.hardware['mcl_xyz_stage'] mcl.settings.x_position.connect_to_widget(Q.cx_doubleSpinBox) Q.x_set_lineEdit.returnPressed.connect( mcl.settings.x_target.update_value) Q.x_set_lineEdit.returnPressed.connect( lambda: Q.x_set_lineEdit.setText("")) mcl.settings.y_position.connect_to_widget(Q.cy_doubleSpinBox) Q.y_set_lineEdit.returnPressed.connect( mcl.settings.y_target.update_value) Q.y_set_lineEdit.returnPressed.connect( lambda: Q.y_set_lineEdit.setText("")) mcl.settings.z_position.connect_to_widget(Q.cz_doubleSpinBox) Q.z_set_lineEdit.returnPressed.connect( mcl.settings.z_target.update_value) Q.z_set_lineEdit.returnPressed.connect( lambda: Q.z_set_lineEdit.setText("")) mcl.settings.move_speed.connect_to_widget( Q.nanodrive_move_slow_doubleSpinBox) # Power Wheel pw = self.hardware['power_wheel_arduino'] pw.settings.encoder_pos.connect_to_widget( Q.power_wheel_encoder_pos_doubleSpinBox) pw.settings.move_steps.connect_to_widget( Q.powerwheel_move_steps_doubleSpinBox) Q.powerwheel_move_fwd_pushButton.clicked.connect(pw.move_fwd) Q.powerwheel_move_bkwd_pushButton.clicked.connect(pw.move_bkwd) #connect events apd = self.hardware['apd_counter'] apd.settings.int_time.connect_to_widget( Q.apd_counter_int_doubleSpinBox) #apd.settings.count_rate.updated_text_value.connect( # Q.apd_counter_output_lineEdit.setText) apd.settings.count_rate.connect_to_widget( Q.apd_counter_output_lineEdit) apd_opt = self.measurements['apd_optimizer'] #apd.settings apd_opt.settings.activation.connect_to_widget( Q.apd_optimize_startstop_checkBox) #self.measurement_state_changed[bool].connect(self.gui.ui.apd_optimize_startstop_checkBox.setChecked) # Spectrometer # aspec = self.hardware['acton_spectrometer'] # aspec.settings.center_wl.connect_to_widget(Q.acton_spec_center_wl_doubleSpinBox) # aspec.settings.exit_mirror.connect_to_widget(Q.acton_spec_exitmirror_comboBox) # aspec.settings.grating_name.connect_to_widget(Q.acton_spec_grating_lineEdit) # # power meter pm = self.hardware['thorlabs_powermeter'] pm.settings.wavelength.connect_to_widget( Q.power_meter_wl_doubleSpinBox) pm.settings.power.connect_to_widget(Q.power_meter_power_label) pm_opt = self.measurements['powermeter_optimizer'] pm_opt.settings.activation.connect_to_widget( Q.power_meter_acquire_cont_checkBox) # shutter = self.hardware['shutter_servo'] # shutter.settings.shutter_open.connect_to_widget(Q.shutter_open_checkBox) # # self.hardware['flip_mirror'].settings.mirror_position.connect_to_widget(Q.flip_mirror_checkBox) # load default settings from file self.settings_load_ini("m3_settings.ini")
def setup(self): print("Adding Hardware Components") import ScopeFoundryHW.picoharp as ph self.add_hardware(ph.PicoHarpHW(self)) from ScopeFoundryHW.picoquant.hydraharp_hw import HydraHarpHW self.add_hardware(HydraHarpHW(self)) #from ScopeFoundryHW.winspec_remote import WinSpecRemoteClientHW #self.add_hardware_component(WinSpecRemoteClientHW(self)) from ScopeFoundryHW.acton_spec import ActonSpectrometerHW self.add_hardware(ActonSpectrometerHW(self)) #from ScopeFoundryHW.tenma_power.tenma_hw import TenmaHW #self.add_hardware(TenmaHW(self)) from ScopeFoundryHW.pololu_servo.multi_servo_hw import PololuMaestroHW, PololuMaestroWheelServoHW, PololuMaestroShutterServoHW self.add_hardware(PololuMaestroHW(self, name='pololu_maestro')) self.add_hardware(PololuMaestroWheelServoHW(self, name='power_wheel', channel=0)) self.add_hardware(PololuMaestroShutterServoHW(self, name='shutter', channel=2)) from ScopeFoundryHW.thorlabs_powermeter import ThorlabsPowerMeterHW self.add_hardware_component(ThorlabsPowerMeterHW(self)) #from ScopeFoundryHW.thorlabs_powermeter.thorlabs_powermeter_analog_readout import ThorlabsPowerMeterAnalogReadOut #self.add_hardware(ThorlabsPowerMeterAnalogReadOut(self)) #from ScopeFoundryHW.dli_powerswitch import DLIPowerSwitchHW #self.add_hardware(DLIPowerSwitchHW(self)) from ScopeFoundryHW.attocube_ecc100.attocube_xyz_hw import AttoCubeXYZStageHW self.add_hardware(AttoCubeXYZStageHW(self)) from ScopeFoundryHW.powermate.powermate_hw import PowermateHW self.add_hardware(PowermateHW(self)) #from ScopeFoundryHW.thorlabs_motorized_filter_flipper.thorlabsMFF_hardware import ThorlabsMFFHW #self.add_hardware_component(ThorlabsMFFHW(self)) #from ScopeFoundryHW.xbox_controller.xbox_controller_hw import XboxControllerHW #self.add_hardware(XboxControllerHW(self)) from ScopeFoundryHW.filter_wheel_arduino.filter_wheel_arduino_hw import FilterWheelArduinoHW self.add_hardware(FilterWheelArduinoHW(self)) #from ScopeFoundryHW.arduino_tc4.arduino_tc4_hw import ArduinoTc4HW #self.add_hardware(ArduinoTc4HW(self)) from ScopeFoundryHW.chameleon_compact_opo.chameleon_compact_opo_hw import ChameleonCompactOPOHW self.add_hardware(ChameleonCompactOPOHW(self)) #from ScopeFoundryHW.keithley_sourcemeter.keithley_sourcemeter_hc import KeithleySourceMeterComponent #self.add_hardware(KeithleySourceMeterComponent(self)) from ScopeFoundryHW.andor_camera import AndorCCDHW, AndorCCDReadoutMeasure self.add_hardware(AndorCCDHW(self)) self.add_measurement(AndorCCDReadoutMeasure) from ScopeFoundryHW.toupcam.toupcam_hw import ToupCamHW self.add_hardware(ToupCamHW(self)) print("Adding Measurement Components") from ir_microscope.measurements.hyperspectral_scan import AndorHyperSpec2DScan self.add_measurement(AndorHyperSpec2DScan(self)) #self.add_measurement(ph.PicoHarpChannelOptimizer(self)) #self.add_measurement(ph.PicoHarpHistogramMeasure(self)) #self.add_measurement(trpl_scan.TRPL2DScan(self, shutter_open_lq_path='hardware/shutter/open')) from ScopeFoundryHW.picoquant.hydraharp_optimizer import HydraHarpOptimizerMeasure self.add_measurement(HydraHarpOptimizerMeasure(self)) from ir_microscope.measurements.trpl_scan import TRPL2DScan self.add_measurement(TRPL2DScan(self)) from ScopeFoundryHW.picoquant.hydraharp_hist_measure import HydraHarpHistogramMeasure self.add_measurement(HydraHarpHistogramMeasure(self)) #from ScopeFoundryHW.winspec_remote import WinSpecRemoteReadoutMeasure #self.add_measurement(WinSpecRemoteReadoutMeasure(self)) from confocal_measure.power_scan import PowerScanMeasure self.add_measurement(PowerScanMeasure(self, shutter_open_lq_path='hardware/shutter/open')) from ScopeFoundryHW.thorlabs_powermeter import PowerMeterOptimizerMeasure self.add_measurement(PowerMeterOptimizerMeasure(self)) from ScopeFoundryHW.attocube_ecc100.attocube_stage_control import AttoCubeStageControlMeasure self.add_measurement(AttoCubeStageControlMeasure(self)) from ScopeFoundryHW.powermate.powermate_measure import PowermateMeasure choices = ['hardware/attocube_xyz_stage/z_target_position', 'hardware/attocube_xyz_stage/x_target_position', 'hardware/attocube_xyz_stage/y_target_position', '', ] self.add_measurement(PowermateMeasure(self, n_devs=3, dev_lq_choices=choices)) #from ScopeFoundryHW.attocube_ecc100.attocube_home_axis_measurement import AttoCubeHomeAxisMeasurement #self.add_measurement(AttoCubeHomeAxisMeasurement(self)) #from measurements.stage_motion_measure import StageHomeAxesMeasure #self.add_measurement(StageHomeAxesMeasure(self)) #from measurements.xbox_controller_measure import XboxControllerMeasure #self.add_measurement(XboxControllerMeasure(self)) #from measurements.laser_line_writer import LaserLineWriter #self.add_measurement(LaserLineWriter(self)) from ir_microscope.measurements.laser_power_feedback_control import LaserPowerFeedbackControl self.add_measurement(LaserPowerFeedbackControl(self)) #from ir_microscope.measurements.position_recipe_control import PositionRecipeControl #self.add_measurement(PositionRecipeControl(self)) #from ir_microscope.measurements.focus_recipe_control import FocusRecipeControl #self.add_measurement(FocusRecipeControl(self)) from ir_microscope.measurements.nested_measurements import NestedMeasurements self.add_measurement(NestedMeasurements(self)) #from ir_microscope.measurements.apd_scan import PicoharpApdScan #self.add_measurement(PicoharpApdScan(self, use_external_range_sync=True)) from confocal_measure.calibration_sweep import CalibrationSweep self.add_measurement(CalibrationSweep(self, spectrometer_hw_name='acton_spectrometer', camera_readout_measure_name='andor_ccd_readout') ) #from ir_microscope.measurements.trpl_parallelogram_scan import TRPLParallelogramScan #self.add_measurement(TRPLParallelogramScan(self, use_external_range_sync=False)) #from ScopeFoundryHW.keithley_sourcemeter.iv_base_measurement import IVBaseMeasurement,IVTRPL #self.add_measurement(IVBaseMeasurement(self)) #self.add_measurement(IVTRPL(self)) #from ScopeFoundryHW.crystaltech_aotf.crystaltech_aotf_hc import CrystalTechAOTF #self.add_hardware(CrystalTechAOTF(self)) #from ScopeFoundryHW.xbox_controller.xbox_controller_test_measure import from confocal_measure.toupcam_spot_optimizer import ToupCamSpotOptimizer self.add_measurement(ToupCamSpotOptimizer(self)) from ir_microscope.measurements.auto_focus_measure import AutoFocusMeasure self.add_measurement(AutoFocusMeasure(self)) ####### Quickbar connections ################################# self.add_quickbar(load_qt_ui_file(sibling_path(__file__, 'ir_quick_access.ui'))) Q = self.quickbar #power mate self.measurements['powermate_measure'].settings.fine.connect_to_widget(Q.fine_checkBox) # LED ''' tenmaHW = self.hardware['tenma_powersupply'] Q.tenma_power_on_pushButton.clicked.connect(lambda: tenmaHW.write_both(V=3.0,I=0.1,impose_connection=True)) Q.tenma_power_off_pushButton.clicked.connect(tenmaHW.zero_both) tenmaHW.settings.actual_current.connect_to_widget(Q.tenma_power_current_doubleSpinBox) Q.tenma_power_current_plus_pushButton.clicked.connect(lambda: tenmaHW.write_delta_current(delta = 0.05)) Q.tenma_power_current_minus_pushButton.clicked.connect(lambda: tenmaHW.write_delta_current(delta = -0.05)) Q.tenma_power_current_lineEdit.returnPressed.connect(tenmaHW.settings.set_current.update_value) Q.tenma_power_current_lineEdit.returnPressed.connect(lambda: Q.tenma_power_current_lineEdit.setText("")) tenmaHW.settings.actual_voltage.connect_to_widget(Q.tenma_power_voltage_doubleSpinBox) Q.tenma_power_voltage_plus_pushButton.clicked.connect(lambda: tenmaHW.write_delta_voltage(delta = 0.2)) Q.tenma_power_voltage_minus_pushButton.clicked.connect(lambda: tenmaHW.write_delta_voltage(delta = -0.2)) Q.tenma_power_voltage_lineEdit.returnPressed.connect(tenmaHW.settings.set_voltage.update_value) Q.tenma_power_voltage_lineEdit.returnPressed.connect(lambda: Q.tenma_power_voltage_lineEdit.setText("")) ''' # Atto Cube stage = self.hardware['attocube_xyz_stage'] stage.settings.connected.connect_to_widget(Q.stage_connected_checkBox) self.measurements['attocube_stage_control_measure'].settings.activation.connect_to_widget(Q.stage_live_update_checkBox) self.measurements['attocube_stage_control_measure'].settings.wobble.connect_to_widget(Q.stage_wobble_checkBox) stage.settings.x_position.connect_to_widget(Q.cx_doubleSpinBox) Q.x_set_lineEdit.returnPressed.connect(stage.settings.x_target_position.update_value) Q.x_set_lineEdit.returnPressed.connect(lambda: Q.x_set_lineEdit.setText("")) stage.settings.y_position.connect_to_widget(Q.cy_doubleSpinBox) Q.y_set_lineEdit.returnPressed.connect(stage.settings.y_target_position.update_value) Q.y_set_lineEdit.returnPressed.connect(lambda: Q.y_set_lineEdit.setText("")) stage.settings.z_position.connect_to_widget(Q.cz_doubleSpinBox) Q.z_set_lineEdit.returnPressed.connect(stage.settings.z_target_position.update_value) Q.z_set_lineEdit.returnPressed.connect(lambda: Q.z_set_lineEdit.setText("")) #stage.settings.move_speed.connect_to_widget(Q.nanodrive_move_slow_doubleSpinBox) #acton spectrometer acton_spec = self.hardware['acton_spectrometer'] acton_spec.settings.connected.connect_to_widget(Q.spectrometer_connected_checkBox) acton_spec.settings.center_wl.connect_to_widget(Q.center_wl_doubleSpinBox) acton_spec.settings.grating_id.connect_to_widget(Q.grating_id_comboBox) #connect events #apd = self.hardware['apd_counter'] #apd.settings.int_time.connect_to_widget(Q.apd_counter_int_doubleSpinBox) #apd.settings.apd_count_rate.updated_text_value.connect( #Q.apd_counter_output_lineEdit.setText) #apd_opt = self.measurements['apd_optimizer'] #apd.settings #apd_opt.settings.activation.connect_to_widget(Q.apd_optimize_startstop_checkBox) #self.measurement_state_changed[bool].connect(self.gui.ui.apd_optimize_startstop_checkBox.setChecked) # power meter pm = self.hardware['thorlabs_powermeter'] pm.settings.connected.connect_to_widget(Q.power_meter_connected_checkBox) pm.settings.wavelength.connect_to_widget(Q.power_meter_wl_doubleSpinBox) pm.settings.power.connect_to_widget(Q.power_meter_power_label) pm_opt = self.measurements['powermeter_optimizer'] pm_opt.settings.activation.connect_to_widget(Q.power_meter_acquire_cont_checkBox) # laser power feedback lpfc = self.measurements['laser_power_feedback_control'] lpfc.settings.setpoint_power.connect_to_widget(Q.laser_power_feedback_control_setpoint_doubleSpinBox) lpfc.settings.p_gain.connect_to_widget(Q.laser_power_feedback_control_p_gain_doubleSpinBox) lpfc.settings.activation.connect_to_widget(Q.laser_power_feedback_control_activation_checkBox) # Power Wheel #pw = self.hardware['power_wheel_arduino'] pw = self.hardware['power_wheel'] pw.settings.connected.connect_to_widget(Q.power_wheel_connected_checkBox) pw.settings.position.connect_to_widget(Q.power_wheel_encoder_pos_doubleSpinBox) pw.settings.jog_step.connect_to_widget(Q.powerwheel_move_steps_doubleSpinBox) Q.powerwheel_move_fwd_pushButton.clicked.connect(pw.jog_fwd) Q.powerwheel_move_bkwd_pushButton.clicked.connect(pw.jog_bkwd) # Filter Wheel fw = self.hardware['filter_wheel'] fw.settings.connected.connect_to_widget(Q.filter_wheel_connected_checkBox) Q.zero_filter_pushButton.clicked.connect(fw.zero_filter) fw.settings.current_filter.connect_to_widget(Q.current_filter_doubleSpinBox) Q.target_filter_lineEdit.returnPressed.connect(fw.settings.target_filter.update_value) Q.target_filter_lineEdit.returnPressed.connect(lambda: Q.target_filter_lineEdit.setText("")) Q.move_filter_bkwd_pushButton.clicked.connect(fw.decrease_target_filter) Q.move_filter_fwd_pushButton.clicked.connect(fw.increase_target_filter) # Thorlabs Flip Mirror #MFF = self.hardware['thorlabs_MFF'] #MFF.settings.pos.connect_to_widget(Q.thorlabs_MFF_comboBox) # shutter shutter = self.hardware['shutter'] shutter.settings.open.connect_to_widget(Q.shutter_open_checkBox) #AOTF #aotf = self.hardware['CrystalTechAOTF_DDS'] #aotf.settings.connected.connect_to_widget(Q.aotf_connected_checkBox) #aotf.settings.freq0.connect_to_widget(Q.aotf_freq0_doubleSpinBox) #aotf.settings.deflected_wl.connect_to_widget(Q.aotf_deflected_wl_doubleSpinBox) # picoharp #ph = self.hardware['picoharp'] #ph.settings.connected.connect_to_widget(Q.picoharp_connected_checkBox) #ph.settings.count_rate0.connect_to_widget(Q.picoharp_count_rate0_lcdNumber) #ph.settings.count_rate1.connect_to_widget(Q.picoharp_count_rate1_lcdNumber) #ph.settings.Tacq.connect_to_widget(Q.picoharp_Tacq_doubleSpinBox) """ # Andor CCD andor = self.hardware['andor_ccd'] andor.settings.exposure_time.connect_to_widget(Q.andor_ccd_int_time_doubleSpinBox) andor.settings.em_gain.connect_to_widget(Q.andor_ccd_emgain_doubleSpinBox) andor.settings.temperature.connect_to_widget(Q.andor_ccd_temp_doubleSpinBox) andor.settings.ccd_status.connect_to_widget(Q.andor_ccd_status_label) andor.settings.shutter_open.connect_to_widget(Q.andor_ccd_shutter_open_checkBox) # Spectrometer aspec = self.hardware['acton_spectrometer'] aspec.settings.center_wl.connect_to_widget(Q.acton_spec_center_wl_doubleSpinBox) aspec.settings.exit_mirror.connect_to_widget(Q.acton_spec_exitmirror_comboBox) aspec.settings.grating_name.connect_to_widget(Q.acton_spec_grating_lineEdit) #connect events apd = self.hardware['apd_counter'] apd.settings.int_time.connect_to_widget(Q.apd_counter_int_doubleSpinBox) apd.settings.apd_count_rate.updated_text_value.connect( Q.apd_counter_output_lineEdit.setText) #apd_opt = self.measurements['apd_optimizer'] #apd.settings #apd_opt.settings.activation.connect_to_widget(Q.apd_optimize_startstop_checkBox) #self.measurement_state_changed[bool].connect(self.gui.ui.apd_optimize_startstop_checkBox.setChecked) """ ########## # app level settings S = self.settings # 2d scan _2D_scans = ['trpl_2d_scan', 'andor_hyperspec_scan', ] #Create and connect logged quantities to widget and equivalent lqs measurements for ii,lq_name in enumerate(["h_axis","v_axis"]): S.New(lq_name, dtype=str, initial='xy'[ii], choices=("x", "y", "z"), ro=False) getattr(S, lq_name).connect_to_widget(\ getattr(Q, lq_name+'_comboBox')) for m in _2D_scans: getattr(S, lq_name).connect_to_lq( \ getattr(self.measurements[m].settings,lq_name) ) for lq_name in ['h0','h1','v0','v1','dh','dv']: S.New(lq_name, dtype=float, unit='mm', ro=False, spinbox_decimals=6, spinbox_step=0.001,) getattr(S, lq_name).connect_to_widget(\ getattr(Q, lq_name+'_doubleSpinBox')) for m in _2D_scans: getattr(S, lq_name).connect_to_lq( \ getattr(self.measurements[m].settings,lq_name)) for lq_name in ['Nh', 'Nv']: S.New(lq_name, dtype=int, ro=False, vmin=2, initial=11) getattr(S, lq_name).connect_to_widget(\ getattr(Q, lq_name+'_doubleSpinBox')) for m in _2D_scans: getattr(S, lq_name).connect_to_lq( \ getattr(self.measurements[m].settings,lq_name)) for lq_name in ['h_center', 'v_center', 'h_span', 'v_span']: S.New(lq_name, dtype=float, unit='mm', initial=0.005, ro=False, spinbox_decimals=6, spinbox_step=0.001,) getattr(S, lq_name).connect_to_widget(\ getattr(Q, lq_name+'_doubleSpinBox')) for m in _2D_scans: getattr(S, lq_name).connect_to_lq( \ getattr(self.measurements[m].settings,lq_name)) #make connected ranges self.h_range=LQRange(S.get_lq('h0'),S.get_lq('h1'),S.get_lq('dh'),S.get_lq('Nh'), S.get_lq('h_center'), S.get_lq('h_span')) self.v_range=LQRange(S.get_lq('v0'),S.get_lq('v1'),S.get_lq('dv'),S.get_lq('Nv'), S.get_lq('v_center'), S.get_lq('v_span')) self.coppy_current_position_to_2d_scan_center() Q.copy_current_position_to_2d_scan_center_pushButton.clicked.connect( lambda:self.coppy_current_position_to_2d_scan_center(decimal_places=-1))