Exemplo n.º 1
0
    def __init__(self, deviceitem):
        '''
        Parameters
        ----------
        motordevice :   Motor

        '''
        super(MotorControl, self).__init__()
        loadUi(os.path.join(os.path.dirname(__file__), 'motor.ui'), self)
        self.motordevice = deviceitem.device
        self.joylayout.addWidget(pg.JoystickButton())

        self.targetSpinBox = simplewidgets.placeHolderSpinBox(self.targetGo)

        self._updateRange()

        self._setTarget(self.motordevice.setpoint.value)

        self.targetHSlider.valueChanged.connect(self._setTarget)
        self.targetVSlider.valueChanged.connect(self._setTarget)
        self.targetDial.valueChanged.connect(self._setTarget)
        self.targetLineEditLayout.insertWidget(0, self.targetSpinBox)
        # self.targetSpinBox.returnPressed.connect(lambda: self._setTarget(self.targetSpinBox.text()))
        self.targetGo.clicked.connect(lambda: self._setTarget(self.targetSpinBox.text()))
        self.stopButton.clicked.connect(self.stop)

        self.motordevice.readback.subscribe(self._setCurrentValue)
        # motordevice.motor.add_callback('DMOV',partial(guiinvoker.invoke_in_main_thread,self._updateStatus))

        self.sigStatusChanged.connect(self._updateStatus)

        self._setCurrentValue(self.motordevice.readback.get())

        self.targetHSlider.update()
        self.targetVSlider.update()
Exemplo n.º 2
0
import pyqtgraph as pg
from pyqtgraph.Qt import QtCore, QtWidgets

app = pg.mkQApp("Joystick Button Example")
mw = QtWidgets.QMainWindow()
mw.resize(300, 50)
mw.setWindowTitle('pyqtgraph example: JoystickButton')
cw = QtWidgets.QWidget()
mw.setCentralWidget(cw)
layout = QtWidgets.QGridLayout()
cw.setLayout(layout)
mw.show()

l1 = pg.ValueLabel(siPrefix=True, suffix='m')
l2 = pg.ValueLabel(siPrefix=True, suffix='m')
jb = pg.JoystickButton()
jb.setFixedWidth(30)
jb.setFixedHeight(30)

layout.addWidget(l1, 0, 0)
layout.addWidget(l2, 0, 1)
layout.addWidget(jb, 0, 2)

x = 0
y = 0


def update():
    global x, y, l1, l2, jb
    dx, dy = jb.getState()
    x += dx * 1e-3
Exemplo n.º 3
0
    def setup(self):
        self.sem = self.app.hardware['sem_remcon']
        self.controller = self.app.hardware['xbox_controller']

        self.ui = self.dockarea = dockarea.DockArea()

        self.ui.setWindowTitle("sem_align")

        self.sem_controls = self.app.hardware['sem_remcon'].settings.New_UI()

        self.roi_map = {
            'Focus': 'wd_line',
            'Beam Shift': 'beamshift_roi',
            'Stigmation': 'stig_roi',
            'Aperture Align': 'aper_roi'
        }

        self.lq_map = {
            'Focus': 'WD',
            'Beam Shift': 'beamshift_xy',
            'Stigmation': 'stig_xy',
            'Aperture Align': 'aperture_xy'
        }

        self.sem_align_widget_choices = ('Focus', 'Stigmation', 'Beam Shift',
                                         'Aperture Align')

        self.settings.New('active_widget',
                          dtype=str,
                          initial='Focus',
                          ro=False,
                          choices=self.sem_align_widget_choices)

        a = 100

        #aperture=========
        self.aper_plot = pg.PlotWidget()
        self.aper_plot.setAspectLocked(1.0)
        self.aper_plot.plot([-a, a, a, -a, -a], [-a, -a, a, a, -a])

        self.aper_roi = PointLQROI(pos=[0, 0],
                                   size=(a, a),
                                   pen=(0, 9),
                                   movable=True)
        self.aper_plot.addItem(self.aper_roi)
        self.aper_roi.connect_lq(self.sem.settings.aperture_xy)
        self.aper_roi.removeHandle(0)

        self.aper_plot.showGrid(x=True, y=True, alpha=1.0)

        if hasattr(self, 'controller'):
            self.sem.settings.aperture_xy.add_listener(self.aper_roi.setPos,
                                                       float)

        #stig=============
        self.stig_plot = pg.PlotWidget()
        self.stig_plot.setAspectLocked(1.0)

        self.stig_plot.plot([-a, a, a, -a, -a], [-a, -a, a, a, -a])

        self.stig_roi = PointLQROI(pos=[0, 0],
                                   size=(a, a),
                                   pen=(0, 9),
                                   movable=True)
        self.stig_plot.addItem(self.stig_roi)
        self.stig_roi.connect_lq(self.sem.settings.stig_xy)

        self.stig_roi.removeHandle(0)

        self.stig_plot.showGrid(x=True, y=True, alpha=1.0)

        if self.controller:
            self.sem.settings.stig_xy.add_listener(self.stig_roi.setPos, float)

        #beam shift=============
        self.beamshift_plot = pg.PlotWidget()
        self.beamshift_plot.setAspectLocked(1.0)

        a = 100
        # Boundary
        self.beamshift_plot.plot([-a, a, a, -a, -a], [-a, -a, a, a, -a])

        self.beamshift_roi = PointLQROI(pos=[0, 0],
                                        size=(a, a),
                                        pen=(0, 9),
                                        movable=True)
        self.beamshift_plot.addItem(self.beamshift_roi)
        self.beamshift_roi.connect_lq(self.sem.settings.beamshift_xy)

        self.beamshift_roi.removeHandle(0)

        self.beamshift_plot.showGrid(x=True, y=True, alpha=1.0)

        if self.controller:
            self.sem.settings.beamshift_xy.add_listener(
                self.beamshift_roi.setPos, float)

        #focus==============
        self.wd_widget = QtWidgets.QWidget()
        self.wd_widget.setLayout(QtWidgets.QVBoxLayout())

        self.wd_joystick = pg.JoystickButton()
        self.wd_joystick.sigStateChanged.connect(self.on_wd_joystick)
        self.wd_widget.layout().addWidget(self.wd_joystick, stretch=1)

        self.wd_plot = pg.PlotWidget()
        self.wd_plot.invertY(True)
        self.wd_widget.layout().addWidget(self.wd_plot, stretch=1)

        self.wd_line = pg.InfiniteLine(1,
                                       angle=0,
                                       pen=pg.mkPen((0, 9), width=4),
                                       movable=True)
        self.wd_plot.addItem(self.wd_line)
        self.wd_lim0 = pg.InfiniteLine(0, angle=0, pen=(2, 9), movable=False)
        self.wd_plot.addItem(self.wd_lim0)
        self.wd_lim1 = pg.InfiniteLine(50, angle=0, pen=(2, 9), movable=False)
        self.wd_plot.addItem(self.wd_lim1)

        self.wd_line.sigDragged.connect(self.on_update_wd_line)
        self.sem.settings.WD.add_listener(self.wd_line.setPos, float)

        self.dock_config()

        self.activate_focus_control()