Example #1
0
    def __init__(self):
        super(App, self).__init__()

        # Call the class generated by the .ui file
        # from QT Designer.
        self.ui = Ui_window()
        self.ui.setupUi(self)

        # Make window frameless.
        self.setWindowFlags(QtCore.Qt.FramelessWindowHint)

        self.months = [
            'Jan', 'Feb', 'Mar', 'Apr', 'May', ' Jun', 'Jul', 'Aug', 'Sep',
            'Oct', 'Nov', 'Dec'
        ]
        self.weekdays = [
            'Monday', 'Tuesdag', 'Wednesday', 'Thursday', 'Friday', 'Saturday',
            'Sunday'
        ]
        self.direction = {
            '\u2191': [330, 30],  # N
            '\u2196': [310, 320],  # NW
            '\u2190': [240, 300],  # W
            '\u2199': [200, 230],  # SW
            '\u2193': [150, 190],  # S
            '\u2198': [130, 140],  # SE
            '\u2192': [60, 120],  # E
            '\u2197': [40, 50]
        }  # NE

        self.scheduler = QtScheduler()
        self.set_time()
        self.set_weather()
        self.schedule()
        self.show()
Example #2
0
def qt_schedule():
    import signal
    import sys
    from apscheduler.schedulers.qt import QtScheduler

    try:
        from PyQt5.QtWidgets import QApplication, QLabel
    except ImportError:
        try:
            from PyQt4.QtGui import QApplication, QLabel
        except ImportError:
            from PySide.QtGui import QApplication, QLabel

    def tick():
        label.setText('Tick! The time is: %s' % datetime.now())

    app = QApplication(sys.argv)

    # This enables processing of Ctrl+C keypresses
    signal.signal(signal.SIGINT, lambda *args: QApplication.quit())

    label = QLabel('The timer text will appear here in a moment!')
    label.setWindowTitle('QtScheduler example')
    label.setFixedSize(280, 50)
    label.show()

    scheduler = QtScheduler()
    scheduler.add_job(tick, 'interval', seconds=3)
    scheduler.start()

    # Execution will block here until the user closes the windows or Ctrl+C is pressed.
    app.exec_()
Example #3
0
    def __init__(self, *args, **kwargs):
        super().__init__(*args, **kwargs)
        self.setupUi(self)

        self.setWindowFlags(qtc.Qt.WindowCloseButtonHint)
        self.setWindowIcon(qtg.QIcon('icon.png'))
        # self.setWindowIcon(qtg.QIcon('./src/ressource/icon.png'))
        self.setFixedSize(130, 60)

        self.offButton.setChecked(True)
        self.onButton.toggled.connect(self.on_off_toggle)
        self.timerSpinBox.setValue(10)

        self.scheduler = QtScheduler()

        self.tray = qtw.QSystemTrayIcon(self)
        self.tray.setIcon(qtg.QIcon('icon.png'))
        # self.tray.setIcon(qtg.QIcon('./src/ressource/icon.png'))
        # self.tray.setIcon(qtg.QIcon(':/ressource/icon.png'))
        self.tray.setToolTip('BT keep Alive')
        quit_action = qtw.QAction("Exit", self)
        quit_action.triggered.connect(qtw.qApp.quit)
        tray_menu = qtw.QMenu()
        tray_menu.addAction(quit_action)
        self.tray.setContextMenu(tray_menu)
        self.tray.setVisible(True)
        self.tray.show()
        self.tray.activated.connect(self.on_systray_activated)
Example #4
0
    def getScheduler(self) -> QtScheduler:
        if isinstance(self.__scheduler, QtScheduler):
            return self.__scheduler

        self.__scheduler = QtScheduler({
            'apscheduler.jobstores.default': {
                'type': 'sqlalchemy',
                'url': 'sqlite:///jobs.sqlite'
            },
            'apscheduler.executors.default': {
                'class': 'apscheduler.executors.pool:ThreadPoolExecutor',
                'max_workers': '20'
            },
            'apscheduler.executors.processpool': {
                'type': 'processpool',
                'max_workers': '5'
            },
            'apscheduler.job_defaults.coalesce':
            'false',
            'apscheduler.job_defaults.max_instances':
            '3',
            'apscheduler.timezone':
            'UTC',
        })

        self.__scheduler.start()

        return self.__scheduler
Example #5
0
	def Iniciar(self):
		self.scheduler = QtScheduler()
		self.trigger = IntervalTrigger(hours=1)
		self.scheduler.add_job(self.Proceso, self.trigger)
		self.scheduler.start()
		t = threading.Thread(target=self.Proceso)
		t.start()
Example #6
0
def monitor():
    try:
        from apscheduler.schedulers.qt import QtScheduler
        from apscheduler.triggers.cron import CronTrigger
        app = QCoreApplication(sys.argv)
        global me
        me = Monitor(cf)
        sched = QtScheduler()

        schedtime = [y.split(':') for x in cf.get('monitor', 'schedtime').strip().split('|') for y in x.split(',')]
        trigger_start = CronTrigger(day_of_week=schedtime[0][0], hour=int(schedtime[1][0]), minute=int(schedtime[1][1]))
        logger.info('schedulers:start dayofweek:%s startime:%s ', schedtime[0][0], schedtime[1])
        trigger_stop = CronTrigger(day_of_week=schedtime[2][0], hour=int(schedtime[3][0]), minute=int(schedtime[3][1]))
        logger.info('schedulers:stop dayofweek:%s stoptime:%s', schedtime[2][0], schedtime[3])
        sched.add_job(start, trigger_start, misfire_grace_time = 10)
        sched.add_job(stop, trigger_stop, misfire_grace_time = 10)
        sched.start()

        working_time_range = parse_work_time(cf.get("monitor", "workingtime"))
        #上面的任务调度只有在未来时间才会触发
        #这里加上判断当前时间如果在工作时间(时间段和交易日都要符合),则要开启
        if is_trade_day(cf) and is_working_time(working_time_range):
            start()

        app.exec_()
    except BaseException,e:
        logger.exception(e)
Example #7
0
def main():

    app = QApplication(sys.argv)
    config.fileConfig(ConfigFile.LOGGING)

    # Initialize views
    window = MainWindow(UiFile.MAIN_WINDOW)
    user_dialog = UserDialog(UiFile.USER_DIALOG)
    query_dialog = QueryDialog(UiFile.QUERY_DIALOG)

    # Initialize model dependencies
    scheduler = TaskScheduler(QtScheduler(logger=getLogger('scheduler')))
    emailer = EmailSender(EmailClient(HOST, PORT, EMAIL, PASSWORD))
    reddit = Reddit(
        praw.Reddit(client_id=ID, client_secret=None, user_agent=AGENT))
    user_validator = UserValidator()
    user_retriever = PickleStorageRetriever(StorageFile.USER)
    user_saver = PickleStorageSaver(StorageFile.USER)
    user_storage = FileStorage(user_retriever, user_saver)
    query_retriever = PickleStorageRetriever(StorageFile.QUERYLISTING)
    query_saver = PickleStorageSaver(StorageFile.QUERYLISTING)
    query_storage = FileStorage(query_retriever, query_saver)

    # Initialize model
    window_model = MainWindowModel(scheduler, user_storage, query_storage,
                                   emailer, reddit)
    user_dialog_model = UserDialogModel(scheduler, user_storage,
                                        user_validator)
    query_dialog_model = QueryDialogModel(scheduler, query_storage, reddit)

    # Initialize presenters
    window_presenter = MainWindowPresenter(window, window_model)
    user_dialog_presenter = UserDialogPresenter(user_dialog, user_dialog_model)
    query_dialog_presenter = QueryDialogPresenter(query_dialog,
                                                  query_dialog_model)

    # Connect signals to slots
    window.user_dialog_clicked.connect(user_dialog.show)
    window.query_dialog_clicked.connect(query_dialog.show)
    user_dialog.confirm_clicked.connect(
        user_dialog_presenter.validate_user_info)
    query_dialog.confirm_clicked.connect(
        query_dialog_presenter.validate_subreddit)
    scheduler.user_ready.connect(window_presenter.when_user_ready)
    scheduler.query_ready.connect(window_presenter.when_query_ready)
    scheduler.querylisting_available.connect(
        window_presenter.with_querylisting)
    scheduler.query_available.connect(window_presenter.with_query)
    scheduler.query_result_available.connect(
        window_presenter.with_query_result)

    window.show()
    sys.exit(app.exec_())
Example #8
0
    def __init__(self):
        # access variables, methods etc in the AquetiOperationGUI.py file
        super(self.__class__, self).__init__()
        self.setupUi(
            self
        )  # This is defined in AquetiOperationGUI.py file automatically
        # It sets up layout and widgets that are defined
        print("Starting EthScheduler: current time: " +
              str(datetime.now().time()))
        print("-----------------------------------------------")
        print(" ")

        # create default save location if it doesn't exist
        if not os.path.exists(settings.DEFAULT_CONFIG_LOCATION):
            os.makedirs(settings.DEFAULT_CONFIG_LOCATION)

        self.workers = {}
        self.scheduler = QtScheduler()

        # fill table from file on disk
        self.readWorkerFile()

        for key, value in sorted(self.workers.items()):

            # add the item to the table
            self.addItemToTable(value['name'], value['ip'], value['username'])

            # start schedules for each item
            for key, time in sorted(value['times'].items()):
                self.scheduleWorker(value['name'], time['startTime'],
                                    time['endTime'], time['mode'], time['day'],
                                    time['coin'], time['address'])
                self.addItemToTimeTable(time['startTime'], time['endTime'],
                                        time['mode'], time['day'],
                                        time['coin'], time['address'])

        # setup signals and slots
        self.actionAdd_Worker.triggered.connect(self.addWorker)
        self.add_worker_pushButton.clicked.connect(self.addWorker)
        self.delete_worker_pushButton.clicked.connect(self.deleteWorker)
        self.actionQuit.triggered.connect(self.close)
        self.worker_tableWidget.cellClicked.connect(self.tableCellClicked)
        self.worker_tableWidget.cellChanged.connect(self.tableCellChanged)
        self.add_time_pushButton.clicked.connect(self.addTime)
        self.remove_time_pushButton.clicked.connect(self.removeTime)

        self.status_changed.connect(self.setWorkerColor)

        self.scheduler.start()
Example #9
0
def test():
    try:
        from apscheduler.schedulers.qt import QtScheduler
        app = QCoreApplication(sys.argv)
        global me
        me = Monitor(cf)
        sched = QtScheduler()
        # m = Main()
        # sched.add_job(start, 'cron', id='first', day_of_week ='0-4', hour = 9, minute = 11)
        # sched.add_job(stop, 'cron', id='second', day_of_week ='0-4', hour = 15, minute = 20)
        sched.add_job(start, 'cron', id='first',  hour = 17, minute = 21,second = 0)
        sched.add_job(stop, 'cron', id='second',  hour = 21, minute = 10)
        sched.start()
        app.exec_()
    except BaseException,e:
        logger.exception(e)
Example #10
0
    def __init__(self, scheduler):
        '''
		https://apscheduler.readthedocs.io/en/latest/userguide.html?highlight=add_job

		Parameters
		----------
		scheduler:
			[str] 调度器,根据开发需求选择相应的调度器
			'BlockingScheduler' 阻塞式调度器:
				适用于只跑调度器的程序
			'BackgroundScheduler' 后台调度器:
				适用于非阻塞的情况,调度器会在后台独立运行
			'AsyncIOScheduler' AsyncIO调度器:
				适用于应用使用AsnycIO的情况
			'GeventScheduler' Gevent调度器:
				适用于应用通过Gevent的情况
			'TornadoScheduler' Tornado调度器:
				适用于构建Tornado应用
			'TwistedScheduler' Twisted调度器:
				适用于构建Twisted应用
			'QtScheduler' Qt调度器:
				适用于构建Qt应用
		'''
        import logging
        logging.basicConfig()
        scheduler = str(scheduler).lower()
        if ('blocking' in scheduler):
            from apscheduler.schedulers.blocking import BlockingScheduler
            self.scheduler = BlockingScheduler()
        elif ('background' in scheduler):
            from apscheduler.schedulers.background import BackgroundScheduler
            self.scheduler = BackgroundScheduler()
        elif ('asyncio' in scheduler):
            from apscheduler.schedulers.asyncio import AsyncIOScheduler
            self.scheduler = AsyncIOScheduler()
        elif ('gevent' in scheduler):
            from apscheduler.schedulers.gevent import GeventScheduler
            self.scheduler = GeventScheduler()
        elif ('tornado' in scheduler):
            from apscheduler.schedulers.tornado import TornadoScheduler
            self.scheduler = TornadoScheduler()
        elif ('twisted' in scheduler):
            from apscheduler.schedulers.twisted import TwistedScheduler
            self.scheduler = TwistedScheduler()
        elif ('qt' in scheduler):
            from apscheduler.schedulers.qt import QtScheduler
            self.scheduler = QtScheduler()
    def retranslateUi(self, Read_Window):
        _translate = QtCore.QCoreApplication.translate
        Read_Window.setWindowTitle(
            _translate("Read_Window", "Temperature Controller"))
        self.label_2.setText(_translate("Read_Window", "AIR Temp"))
        self.label_6.setText(_translate("Read_Window", "DUT Temp"))
        self.label_3.setText(_translate("Read_Window", "Set Point"))
        self.SET_B.setText(_translate("Read_Window", "SET"))
        self.EXIT_B.setText(_translate("Read_Window", "Exit"))
        self.label.setText(
            _translate("Read_Window", "Temperature Controller - Airjet XE"))

        scheduler = QtScheduler()
        global Stvjob, rm, instruments, airjet, Set_Temp, Nozzle_Temp, DUT_Temp
        Stvjob = scheduler.add_job(self.SETSP, 'interval', seconds=0.5)
        scheduler.start()

        self.SET_B.clicked.connect(self.SET_TEMP)
        self.EXIT_B.clicked.connect(self.CLOSE_JOB)
Example #12
0
    def __init__(self):
        QThread.__init__(self)
        self.track_idx = ""
        self.language = ""
        self.signals = TrackSignals()
        """
        ApScheduler setup
        """

        jobstores = {"default": MemoryJobStore()}
        job_defaults = {"coalesce": True, "max_instances": 1}
        self.scheduler = QtScheduler(jobstores=jobstores,
                                     job_defaults=job_defaults)
        # prepare schedule tasks
        self.scheduler.add_job(
            self.check_tracks,
            trigger="interval",
            id="auto_check_tracks",
            seconds=config.TRACKS_CHECK_SEC_PERIOD,
        )
        # run schedule logic
        self.scheduler.start()
Example #13
0
        mails = japanInbox.Items

        unreadEmails = mails.Restrict("[UnRead] = true")

        if unreadEmails.Count > 0:
            if player.state() != QMediaPlayer.PlayingState:
                player.play()
            else:
                pass

    except Exception as ex:
        logger.critical(str(ex))
        player.play()


scheduler = QtScheduler()
scheduler.add_job(
    checkUnreadEmail,
    "interval",
    seconds=INTERVAL,
    args=[GROUP_FOLDER, TARGET_FOLDER, mediaPlayer, logger],
)
scheduler.start(paused=True)


def runClicked(scheduler, runBtn, stopBtn, stopSoundBtn):
    runBtn.setEnabled(False)
    stopBtn.setEnabled(True)
    stopSoundBtn.setEnabled(True)
    scheduler.resume()
Example #14
0
from time import localtime, strftime  # ------------------------------------------------ for the right format of time values
import datetime  # --------------------------------------------------------------------- for the monitoring

########################################################################################################
########################################################################################################
########################################################################################################
################                                                            ############################
################               THE MAIN PROGRAMM                            ############################
################                                                            ############################
########################################################################################################
########################################################################################################
########################################################################################################

# starts the scheduler for our program -----------------------------------------------------------------
program_scheduler = QtScheduler()
program_scheduler.start()


class c_program:
    def __init__(self):

        #----- values which are part of the object program and can be accessed easily from the outside -#
        self.add_value_01 = 0.0  # for the addition
        self.add_value_02 = 0.0  # for the addition

        self.mult_value_01 = 0.0  # for the multiplication
        self.mult_value_02 = 0.0  # for the multiplication

        # save start time of program
        self.time_start = int(strftime("%Y", localtime())), int(
Example #15
0
 def qtScheduler(self):
     return QtScheduler()
Example #16
0
    def __init__(self):
        QtGui.QWidget.__init__(self)
        self.MainWindow = Ui_MainWindow()
        self.MainWindow.setupUi(self)

        self.iconoeditar = QtGui.QIcon()
        self.iconoeditar.addPixmap(QtGui.QPixmap(":/ico/edit-icon.png"),
                                   QtGui.QIcon.Normal, QtGui.QIcon.Off)
        self.iconoborrar = QtGui.QIcon()
        self.iconoborrar.addPixmap(QtGui.QPixmap(":/ico/Delete_Icon.png"),
                                   QtGui.QIcon.Normal, QtGui.QIcon.Off)
        self.iconocam = QtGui.QIcon()

        self.setWindowIcon(QtGui.QIcon("icon.png"))

        self.MainWindow.tableWidget_TareasConfig.verticalHeader().setVisible(
            False)
        self.MainWindow.tableWidget_TareasConfig.setShowGrid(False)
        self.MainWindow.tableWidget_TareasConfig.setAlternatingRowColors(True)
        self.MainWindow.tableWidget_TareasConfig.verticalHeader(
        ).setDefaultSectionSize(20)
        self.MainWindow.tableWidget_TareasConfig.setEditTriggers(
            QtGui.QAbstractItemView.NoEditTriggers)
        self.MainWindow.tableWidget_TareasConfig.setSelectionBehavior(
            QtGui.QAbstractItemView.SelectRows)

        self.MainWindow.tableWidget_Tareas.verticalHeader().setVisible(False)
        self.MainWindow.tableWidget_Tareas.setShowGrid(False)
        self.MainWindow.tableWidget_Tareas.setAlternatingRowColors(True)
        self.MainWindow.tableWidget_Tareas.verticalHeader(
        ).setDefaultSectionSize(20)
        self.MainWindow.tableWidget_Tareas.setEditTriggers(
            QtGui.QAbstractItemView.NoEditTriggers)
        self.MainWindow.tableWidget_Tareas.setSelectionBehavior(
            QtGui.QAbstractItemView.SelectRows)

        self.connect(self.MainWindow.actionAgregar_Tarea,
                     QtCore.SIGNAL("triggered()"), self.AbrirAgregarTarea)
        self.connect(self.MainWindow.actionProgramar_Tarea,
                     QtCore.SIGNAL("triggered()"), self.AbrirProgramarTarea)

        self.scheduler = QtScheduler()

        self.BD = BasedeDatos()
        self.BD.Conectar()

        self.CargarTareasProgramadas()
        self.CargarTareas()
        self.ProgramarTareas()

        self.ListarTareas()
        self.ListarTareasProgramadas()
        ##################   FUNCIONES PARA EL SYSTEM TRAY ICON   #######################

        self.exitOnClose = False
        exit = QtGui.QAction(QtGui.QIcon("icon.png"), "Cerrar 365Jobs", self)
        self.connect(exit, QtCore.SIGNAL("triggered()"), self.exitEvent)
        self.trayIcon = QtGui.QSystemTrayIcon(QtGui.QIcon("icon.png"), self)
        menu = QtGui.QMenu(self)
        menu.addAction(exit)
        self.trayIcon.setContextMenu(menu)
        self.connect(self.trayIcon, \
         QtCore.SIGNAL("activated(QSystemTrayIcon::ActivationReason)"), \
         self.trayIconActivated)
        self.trayIcon.show()
        self.trayIcon.showMessage(
            "365Jobs Abierto!",
            "Click para abrir la Ventana\nBoton derecho para Menu")
        self.trayIcon.setToolTip("365Jobs")

        print self.DictTareasProgramadasByID
Example #17
0
 def change_label(self):
     Client_connect = MQTT_Client_initial()
     Client_connect.MQTT_connect()
     change = QtScheduler()  #qt定时器
     change.add_job(func=self.change, trigger="interval", seconds=2)
     change.start()
Example #18
0
risk_ctrl = ctrl.ControlSystem([rule1, rule2, rule3, rule4, rule5, rule6, rule7])

predict_risk = ctrl.ControlSystemSimulation(risk_ctrl)

client = mqtt.Client(client_id="MQTTrec", clean_session=True, protocol=mqtt.MQTTv31)

executors = {
    'default': {'type': 'threadpool', 'max_workers': 1},
    'processpool': ProcessPoolExecutor(max_workers=1)
    }
job_defaults = {
    'coalesce': True,
    'max_instances': 5
    }   
        
scheduler  = QtScheduler(executors=executors, job_defaults=job_defaults)

def initdatabases():

    conn = sqlite3.connect('serm.db')

    with conn:

        conn.execute("DROP TABLE IF EXISTS data")

        conn.execute('''CREATE TABLE data
           (
           recid            INTEGER  PRIMARY KEY AUTOINCREMENT,
           datetime         INTEGER  NOT NULL,
           smoke            float    NOT NULL,
           lpg              float    NOT NULL,
    def __init__(self):

        #---------------------------------------------------------------------#
        #--- GLOBAL PARAMETERS AND VARIABLES ---------------------------------#
        #---------------------------------------------------------------------#

        #--- FREQUENCY Parameters --------------------------------------------#
        self.nu_blue_1_was, self.nu_blue_2_was, self.nu_red_1_was, self.nu_red_2_was = [
            0
        ] * 500, [0] * 500, [0] * 500, [0] * 500
        self.nu_history = {
            'blue_1': [0] * 500,
            'blue_2': [0] * 500,
            'red_1': [0] * 500,
            'red_2': [0] * 500,
            '423': [0] * 500
        }

        self.nu_blue_1_is, self.nu_blue_2_is, self.nu_red_1_is, self.nu_red_2_is = 0.0, 0.0, 0.0, 0.0
        self.nu = {'blue_1': 0, 'blue_2': 0, 'red_1': 0, 'red_2': 0, '423': 0}
        self.nu_prev = self.nu.copy()

        self.nu_blue_1_want, self.nu_blue_2_want, self.nu_red_1_want, self.nu_red_2_want = 755.186770, 0.0, 0.0, 0.0
        self.nu_setpoint = self.nu.copy()

        self.nu_blue_1_smooth_flag, self.nu_blue_2_smooth_flag, self.nu_red_1_smooth_flag, self.nu_red_2_smooth_flag = 1, 1, 1, 1
        self.nu_blue_1_smooth_want, self.nu_blue_2_smooth_want, self.nu_red_1_smooth_want, self.nu_red_2_smooth_want = 755.186770, 0.0, 0.0, 0.0
        self.nu_blue_1_smooth_delta_t, self.nu_blue_2_smooth_delta_t, self.nu_red_1_smooth_delta_t, self.nu_red_2_smooth_delta_t = 10.0, 10.0, 10.0, 10.0

        self.nu_smooth_increment = 0.000001
        #---------------------------------------------------------------------#

        #--- PIEZO Parameters ------------------------------------------------#
        self.nu_blue_1_piezo_set, self.nu_blue_2_piezo_set, self.nu_red_1_piezo_set, self.nu_red_2_piezo_set = 0.0, 0.0, 0.0, 0.0
        #---------------------------------------------------------------------#

        #--- LOCKING Parameters ----------------------------------------------#
        self.lock_blue_1 = False
        self.lock_lasers = {
            'blue_1': False,
            'blue_2': False,
            'red_1': False,
            'red_2': False,
            '423': False
        }
        self.lock_blue_2_flag, self.lock_red_1_flag, self.lock_red_2_flag = 1, 1, 1

        self.lock_blue_1_alpha, self.lock_blue_2_alpha, self.lock_red_1_alpha, self.lock_red_2_alpha = 20., 20., 20., 20.
        self.lock_blue_1_beta, self.lock_blue_2_beta, self.lock_red_1_beta, self.lock_red_2_beta = 15., 15., 15., 15.

        default_lock_pars = {'k_p': 20, 'k_i': 20}
        self.lock_pars = {
            'blue_1': default_lock_pars.copy(),
            'blue_2': default_lock_pars.copy(),
            'red_1': default_lock_pars.copy(),
            'red_2': default_lock_pars.copy(),
            '423': default_lock_pars.copy()
        }

        self.lock_blue_1_Integral, self.lock_blue_2_Integral, self.lock_red_1_Integral, self.lock_red_2_Integral = 0.0, 0.0, 0.0, 0.0

        self.errors_previous = {
            'blue_1': 0,
            'blue_2': 0,
            'red_1': 0,
            'red_2': 0,
            '423': 0
        }

        self.lock_polarity = {'blue_1': +1, 'blue_2': +1, '423': -1}

        #Lock error counters
        self.lock_blue_1_count, self.lock_blue_2_count, self.lock_red_1_count, self.lock_red_2_count = 0, 0, 0, 0
        self.lock_count = {
            'blue_1': 0,
            'blue_2': 0,
            'red_1': 0,
            'red_2': 0,
            '423': 0
        }
        #---------------------------------------------------------------------#

        #--- SAWTOOTH Parameters ---------------------------------------------#
        self.sawtooth_flag = 1
        self.sawtooth_nu_blue_1_init = 755.186880
        self.sawtooth_nu_blue_1_detuned = 755.186780
        self.sawtooth_nu_blue_2_init = 755.258220
        self.sawtooth_nu_blue_2_detuned = 755.258120
        self.sawtooth_delta_t1 = 1.5
        self.sawtooth_delta_t2 = 0.75
        self.sawtooth_t_incr = 0.05
        self.sawtooth_total_reps = 1

        self.sawtooth_t_total = []
        self.sawtooth_nu1_total = []
        self.sawtooth_nu2_total = []
        #---------------------------------------------------------------------#

        #--- Debug vars ------------------------------------------------------#
        self.debug_flag = False
        self.debug_number = 10

        #---------------------------------------------------------------------#
        #---------------------------------------------------------------------#
        #---------------------------------------------------------------------#

        #---------------------------------------------------------------------#
        #--- CREATE INSTANCES OF WM AND LASER CONTROLLERS --------------------#
        #---------------------------------------------------------------------#

        #---------------------------------------------------------------------#
        self.HF_WM = HighFinesse_WM()
        #---------------------------------------------------------------------#

        #---------------------------------------------------------------------#
        self.T_DLC_blues = Toptica_DLC_pro('192.168.0.2')
        self.lock_blue_1_piezo_volt_set = float(
            self.T_DLC_blues.read_parameter('laser1:dl:pc:voltage-set'))
        self.lock_blue_2_piezo_volt_set = float(
            self.T_DLC_blues.read_parameter('laser2:dl:pc:voltage-set'))
        #---------------------------------------------------------------------#
        self.lock_blue_1_piezo_volt_init = self.lock_blue_1_piezo_volt_set
        self.lock_blue_2_piezo_volt_init = self.lock_blue_2_piezo_volt_set
        #---------------------------------------------------------------------#
        self.T_DLC_reds = Toptica_DLC_pro('192.168.0.3')
        self.lock_red_1_piezo_volt_set = float(
            self.T_DLC_reds.read_parameter('laser1:dl:pc:voltage-set'))
        self.lock_red_2_piezo_volt_set = float(
            self.T_DLC_reds.read_parameter('laser2:dl:pc:voltage-set'))
        #---------------------------------------------------------------------#
        self.lock_red_1_piezo_volt_init = self.lock_red_1_piezo_volt_set
        self.lock_red_2_piezo_volt_init = self.lock_red_2_piezo_volt_set

        self.DAQ_423 = DAQ()

        #DAQ_voltage = DAQ_423.get_voltage(5)
        DAQ_voltage = 0

        self.piezo_volt = {
            'blue_1': self.lock_blue_1_piezo_volt_set,
            'blue_2': self.lock_blue_2_piezo_volt_set,
            'red_1': self.lock_red_1_piezo_volt_set,
            'red_2': self.lock_red_2_piezo_volt_set,
            '423': DAQ_voltage
        }

        #---------------------------------------------------------------------#
        #---------------------------------------------------------------------#
        #---------------------------------------------------------------------#

        #---------------------------------------------------------------------#
        #--- SCHEDULE ITERATIVE JOBS TO GET DATA FROM WM ---------------------#
        #---------------------------------------------------------------------#

        #---------------------------------------------------------------------#
        self.program_scheduler = QtScheduler()
        self.program_scheduler.start()
        #---------------------------------------------------------------------#

        #---------------------------------------------------------------------#
        self.program_scheduler.add_job(self.control_loop,
                                       'interval',
                                       seconds=0.05,
                                       id='id_update_wm_data')
Example #20
0
from PyQt5.QtGui import *
from PyQt5.QtWidgets import *

from app import db_file
from app.database import DataBase
from app.main_window import MainWindow

jobstores = {"default": SQLAlchemyJobStore(url=f"sqlite:///{db_file}")}
executors = {
    "default": ThreadPoolExecutor(20),
    "processpool": ProcessPoolExecutor(5)
}
job_defaults = {"coalesce": False, "max_instances": 3}

if __name__ == "__main__":
    appctxt = ApplicationContext()  # 1. Instantiate ApplicationContext
    db = DataBase()

    qtsched = QtScheduler(
        jobstores=jobstores,
        executors=executors,
        job_defaults=job_defaults,
    )
    view = MainWindow(database=db, scheduler=qtsched, ctx=appctxt)
    qtsched.start()

    view.show()
    view.raise_()
    exit_code = appctxt.app.exec_()  # 2. Invoke appctxt.app.exec_()
    sys.exit(exit_code)
 def schedule_single_task(self):
     self.scheduler = TaskScheduler(QtScheduler())
     self.task = Task(test_func)
     self.scheduledTask = self.scheduler.schedule_task_in_interval(
         self.task, 1, Time.SEC)