def __init__(self, parent=None): QWidget.__init__(self, parent) self.ui = uic.loadUi("Beamshutter.ui", self) self.control = QAxContainer.QAxWidget(self) self.control.setControl('{3CE35BF3-1E13-4D2C-8C0B-DEF6314420B3}') self.control.setProperty("HWSerialNum", 85845031) self.control.setGeometry(0, 0, 600, 400) self.mutex = QMutex(mode=QMutex.Recursive) self.shutterReplied = False self.shut = Beamshutter(self) self.worker = WorkerThread() self.ui.mainLayout.addWidget(self.control) self.layout().setAlignment(Qt.AlignCenter) sizePolicy = QSizePolicy(QSizePolicy.Preferred, QSizePolicy.Preferred) sizePolicy.setHeightForWidth(True) self.setSizePolicy(sizePolicy)
def __init__(self,parent=None): QWidget.__init__(self,parent) self.ui=uic.loadUi("Beamshutter.ui",self) self.control = QAxContainer.QAxWidget(self) self.control.setControl('{3CE35BF3-1E13-4D2C-8C0B-DEF6314420B3}') self.control.setProperty("HWSerialNum",85845031) self.control.setGeometry(0,0,600,400) self.mutex=QMutex(mode =QMutex.Recursive) self.shutterReplied=False self.shut=Beamshutter(self) self.worker=WorkerThread() self.ui.mainLayout.addWidget(self.control) self.layout().setAlignment(Qt.AlignCenter) sizePolicy = QSizePolicy(QSizePolicy.Preferred, QSizePolicy.Preferred) sizePolicy.setHeightForWidth(True) self.setSizePolicy(sizePolicy)
class BeamshutterWidget(QWidget): currentShutterState = pyqtSignal(str, name='currentShutterState') def __init__(self, parent=None): QWidget.__init__(self, parent) self.ui = uic.loadUi("Beamshutter.ui", self) self.control = QAxContainer.QAxWidget(self) self.control.setControl('{3CE35BF3-1E13-4D2C-8C0B-DEF6314420B3}') self.control.setProperty("HWSerialNum", 85845031) self.control.setGeometry(0, 0, 600, 400) self.mutex = QMutex(mode=QMutex.Recursive) self.shutterReplied = False self.shut = Beamshutter(self) self.worker = WorkerThread() self.ui.mainLayout.addWidget(self.control) self.layout().setAlignment(Qt.AlignCenter) sizePolicy = QSizePolicy(QSizePolicy.Preferred, QSizePolicy.Preferred) sizePolicy.setHeightForWidth(True) self.setSizePolicy(sizePolicy) def heightForWidth(self, width): return width * 0.75 @pyqtSlot() def on_BInitializeShutter_clicked(self): if not self.LEDShutter.isChecked(): self.initialize() else: self.finalize() def initialize(self): with self.check(timeOut=10): self.worker.executeFunction(self.shut.initialize) self.ui.LEDShutter.setChecked(True) def finalize(self): with self.check(): self.worker.executeFunction(self.shut.finalize) self.LEDShutter.setChecked(False) def enable(self): with self.check(): self.worker.executeFunction(self.shut.enable) def disable(self): with self.check(): self.worker.executeFunction(self.shut.disable) def _del(self): if self.ui.LEDShutter.isChecked(): self.finalize() def heightForWidth(self, w): return (w) @contextmanager def check(self, timeOut=2): out = datetime.datetime.now() + datetime.timedelta(seconds=timeOut) self.shutterReplied = shutterReplied = False yield while datetime.datetime.now() < out and shutterReplied == False: self.mutex.lock() shutterReplied = self.shutterReplied self.mutex.unlock() if shutterReplied == False: raise Exception("ThorlabsShutter timed out and might be Crashed")
class BeamshutterWidget(QWidget): currentShutterState=pyqtSignal(str,name='currentShutterState') def __init__(self,parent=None): QWidget.__init__(self,parent) self.ui=uic.loadUi("Beamshutter.ui",self) self.control = QAxContainer.QAxWidget(self) self.control.setControl('{3CE35BF3-1E13-4D2C-8C0B-DEF6314420B3}') self.control.setProperty("HWSerialNum",85845031) self.control.setGeometry(0,0,600,400) self.mutex=QMutex(mode =QMutex.Recursive) self.shutterReplied=False self.shut=Beamshutter(self) self.worker=WorkerThread() self.ui.mainLayout.addWidget(self.control) self.layout().setAlignment(Qt.AlignCenter) sizePolicy = QSizePolicy(QSizePolicy.Preferred, QSizePolicy.Preferred) sizePolicy.setHeightForWidth(True) self.setSizePolicy(sizePolicy) def heightForWidth(self, width): return width*0.75 @pyqtSlot() def on_BInitializeShutter_clicked(self): if not self.LEDShutter.isChecked(): self.initialize() else: self.finalize() def initialize(self): with self.check(timeOut=10): self.worker.executeFunction(self.shut.initialize) self.ui.LEDShutter.setChecked(True) def finalize(self): with self.check(): self.worker.executeFunction(self.shut.finalize) self.LEDShutter.setChecked(False) def enable(self): with self.check(): self.worker.executeFunction(self.shut.enable) def disable(self): with self.check(): self.worker.executeFunction(self.shut.disable) def _del(self): if self.ui.LEDShutter.isChecked(): self.finalize() def heightForWidth(self,w): return(w) @contextmanager def check(self,timeOut=2): out=datetime.datetime.now()+datetime.timedelta(seconds=timeOut) self.shutterReplied=shutterReplied=False yield while datetime.datetime.now()<out and shutterReplied==False: self.mutex.lock() shutterReplied=self.shutterReplied self.mutex.unlock() if shutterReplied==False: raise Exception("ThorlabsShutter timed out and might be Crashed")