예제 #1
0
    def __init__(self, polarizerProtocol, stepperMotorProtocol):
        QtGui.QWidget.__init__(self)
        self.setLayout(QtGui.QVBoxLayout())
        self.polSMC = StepperMotorClient(stepperMotorProtocol, POL)

        gotoWidget = GotoWidget({
            MIN: -360,
            MAX: 360,
            PRECISION: .1,
            SLIDER: 2,
            POI: {}
        })
        self.layout().addWidget(LabelWidget('angle', gotoWidget))

        # send command to tracking server when goto requested
        @inlineCallbacks
        def onGotoRequested(payload):
            angle, deferred = payload
            yield polarizerProtocol.sendCommand('set-angle', angle)
            deferred.callback(None)

        gotoWidget.gotoRequested.connect(onGotoRequested)

        # handle update requests (should the position fall out of sync)
        def onUpdateReqested():
            polarizerProtocol.sendCommand('get-angle').addCallback(
                gotoWidget.setPosition)

        gotoWidget.updateRequested.connect(onUpdateReqested)

        # send cancel request when goto widget requests
        gotoWidget.cancelRequested.connect(
            partial(polarizerProtocol.sendCommand, 'cancel-angle-set'))

        # set goto widget position on polarizer sm position change
        self.polSMC.addListener(
            self.polSMC.POSITION, lambda _: polarizerProtocol.sendCommand(
                'get-angle').addCallback(gotoWidget.setPosition))

        # initialize position of goto widget
        polarizerProtocol.sendCommand('get-angle').addCallback(
            gotoWidget.setPosition)

        # add enable button to toggle state of sm
        enableButton = QtGui.QPushButton('enable', self)
        enableButton.clicked.connect(self.polSMC.toggleStatus)

        def adjustEnbStatus(status):
            if status == 'enabled':
                enableButton.setText('disable')
                gotoWidget.setEnabled(True)
            elif status == 'disabled':
                enableButton.setText('enable')
                gotoWidget.setEnabled(False)

        self.polSMC.addListener(self.polSMC.ENABLE, adjustEnbStatus)
        self.layout().addWidget(enableButton)
예제 #2
0
    def __init__(self,polarizerProtocol,stepperMotorProtocol):
        QtGui.QWidget.__init__(self)
        self.setLayout(QtGui.QVBoxLayout())
        self.polSMC = StepperMotorClient(stepperMotorProtocol,POL)
        
        gotoWidget = GotoWidget(
            {
                MIN:-360,
                MAX:360,
                PRECISION:.1,
                SLIDER:2,
                POI:{}
            }
        )
        self.layout().addWidget(LabelWidget('angle',gotoWidget))
        
        # send command to tracking server when goto requested
        @inlineCallbacks
        def onGotoRequested(payload):
            angle, deferred = payload
            yield polarizerProtocol.sendCommand('set-angle',angle)
            deferred.callback(None)
        gotoWidget.gotoRequested.connect(onGotoRequested)

        
        # handle update requests (should the position fall out of sync)
        def onUpdateReqested():
            polarizerProtocol.sendCommand('get-angle').addCallback(gotoWidget.setPosition)
        gotoWidget.updateRequested.connect(onUpdateReqested)
        
        
        # send cancel request when goto widget requests
        gotoWidget.cancelRequested.connect(partial(polarizerProtocol.sendCommand,'cancel-angle-set'))
        

        # set goto widget position on polarizer sm position change
        self.polSMC.addListener(
            self.polSMC.POSITION,
            lambda _:polarizerProtocol.sendCommand('get-angle').addCallback(gotoWidget.setPosition)
        )

        # initialize position of goto widget
        polarizerProtocol.sendCommand('get-angle').addCallback(gotoWidget.setPosition)
        

        # add enable button to toggle state of sm
        enableButton = QtGui.QPushButton('enable', self)
        enableButton.clicked.connect(self.polSMC.toggleStatus)
        def adjustEnbStatus(status):
            if status == 'enabled': 
                enableButton.setText('disable')
                gotoWidget.setEnabled(True)
            elif status == 'disabled': 
                enableButton.setText('enable')
                gotoWidget.setEnabled(False)
        self.polSMC.addListener(self.polSMC.ENABLE,adjustEnbStatus)
        self.layout().addWidget(enableButton)
예제 #3
0
def main():
    options = yield getStepperMotorOptions()
    url = yield getStepperMotorURL(options)
    StepperMotorClient.__ccname__ = '(%s) sm client' % options['name']
    protocol = yield getProtocol(url)
    smc = StepperMotorClient(protocol)
    runConsoleClient(
        StepperMotorConsoleClient,
        smc
    )
예제 #4
0
    def __init__(self,polarizerProtocol,stepperMotorProtocol):
        QtGui.QWidget.__init__(self)
        self.setLayout(QtGui.QVBoxLayout())
        self.polSMC = StepperMotorClient(stepperMotorProtocol,POL)
        
        gotoWidget = GotoWidget(
            {
                MIN:-360,
                MAX:360,
                PRECISION:.1,
                SLIDER:2,
                POI:{}
            }
        )
        self.layout().addWidget(LabelWidget('angle',gotoWidget))
        
        # send command to tracking server when goto requested
        @inlineCallbacks
        def onGotoRequested(payload):
            angle, deferred = payload
            yield polarizerProtocol.sendCommand('set-angle',angle)
            deferred.callback(None)
        gotoWidget.gotoRequested.connect(onGotoRequested)

        
        # handle update requests (should the position fall out of sync)
        def onUpdateReqested():
            polarizerProtocol.sendCommand('get-angle').addCallback(gotoWidget.setPosition)
        gotoWidget.updateRequested.connect(onUpdateReqested)
        
        
        # send cancel request when goto widget requests
        gotoWidget.cancelRequested.connect(partial(polarizerProtocol.sendCommand,'cancel-angle-set'))
        

        # set goto widget position on polarizer sm position change
        self.polSMC.addListener(
            self.polSMC.POSITION,
            lambda _:polarizerProtocol.sendCommand('get-angle').addCallback(gotoWidget.setPosition)
        )

        # initialize position of goto widget
        polarizerProtocol.sendCommand('get-angle').addCallback(gotoWidget.setPosition)
        
                
        '''