Skip to content
Snippets Groups Projects
main.py 1.81 KiB
import sys
from datetime import datetime
from pylablib.devices import Thorlabs

from pymeasure.experiment import unique_filename
from pymeasure.experiment import Results
from pymeasure.display.Qt import QtWidgets
import logging

from src.classes.ui import UIWindown
from src.classes.controltab import ControlTab
from src.procedures import B_Sweep, X_Sweep, Y_Sweep

log = logging.getLogger('')
log.addHandler(logging.NullHandler())

class MainWindow(UIWindown):
    def __init__(self):
        super().__init__(
            procedure_class=[B_Sweep, X_Sweep, Y_Sweep],
            inputs=[
                ['acq_time', 'freq', 'b_min', 'b_max', 'b_step', 'x', 'y'],
                ['acq_time', 'freq', 'x_min', 'x_max', 'x_step', 'y', 'field'],
                ['acq_time', 'freq', 'y_min', 'y_max', 'y_step', 'x', 'field']
                ],
            displays=['acq_time', 'freq'],
            x_axis='Iteration',
            y_axis='Voltage',
            widget_list=tuple([ControlTab("Manual control")]),
            directory_input=True
        )
        self.setWindowTitle('Mini MOKE')
        self.directory = 'data'
        try:
            for device in Thorlabs.list_kinesis_devices():
                log.info(f"Thorlab device connected: {device[1]} with serial number: {device[0]}")
        except:
            pass

    def queue(self, procedure=None):
        direc = self.directory + '/' + datetime.now().strftime('%Y-%m')

        if procedure is None:
            procedure = self.make_procedure()

        file = unique_filename(direc, procedure.name+"_")
        results = Results(procedure, file)
        experiment = self.new_experiment(results)

        self.manager.queue(experiment)


if __name__ == "__main__":
    app = QtWidgets.QApplication(sys.argv)
    window = MainWindow()
    window.show()
    sys.exit(app.exec())