Beispiel #1
0
    def findNewValue(self, mode="linear"):
        """ Find new value for this parameter """

        if str.lower(mode) == "linear":
            self.cnt += 1
            if self.cnt == self.paramRepeat:
                # Done this one, next step
                self.cnt = 0
                newval = self.paramValueItem.getValue() + self.paramStep

                if newval > self.paramRange[1]:
                    newval = self.paramRange[0]
                    self.rangeComplete.emit(self.paramNum)

                # Cast type to required value
                newval = self.paramType(newval)

                self.paramValueItem.setValue(newval)

                parameter = self.paramScript + [newval]
                try:
                    Parameter.setParameter(parameter)
                except:
                    raise StopIteration("Choose a valid Parameter Path/Value combination. Got: " + str(parameter))
        else:
            raise ValueError("Unknown Increment Type %s" % mode)
Beispiel #2
0
    def updateParams(self, _=None):
        rng = self.findParam('range').getValue()

        # Force to be valid values
        curval = self.findParam('curval').getValue()
        curval = max(curval, rng[0])
        curval = min(curval, rng[1])
        self.findParam('curval').setLimits(rng)
        self.findParam('curval').setValue(curval)

        self.paramRange = rng
        self.paramValueItem = self.findParam('curval')
        self.paramStep = self.findParam('step').getValue()
        self.paramRepeat = self.findParam('repeat').getValue()
        self.paramType = self.findParam('datatype').getValue()
        try:
            self.paramScript = eval(self.findParam('parampath').getValue())
        except SyntaxError as e:
            logging.error('Syntax Error: %s' % str(e))

        try:
            Parameter.setParameter(self.paramScript+[curval])
        except:
            pass
        self.tracesrequired = math.ceil(((self.paramRange[1] - self.paramRange[0]) / self.paramStep) * self.paramRepeat)+1
        self.tracesreqChanged.emit(self.paramNum, self.tracesrequired)
Beispiel #3
0
    def updateParams(self, _=None):
        rng = self.findParam("range").getValue()

        # Force to be valid values
        curval = self.findParam("curval").getValue()
        curval = max(curval, rng[0])
        curval = min(curval, rng[1])
        self.findParam("curval").setLimits(rng)
        self.findParam("curval").setValue(curval)

        self.paramRange = rng
        self.paramValueItem = self.findParam("curval")
        self.paramStep = self.findParam("step").getValue()
        self.paramRepeat = self.findParam("repeat").getValue()
        self.paramType = self.findParam("datatype").getValue()
        try:
            self.paramScript = eval(self.findParam("parampath").getValue())
        except SyntaxError as e:
            logging.error("Syntax Error: %s" % str(e))

        try:
            Parameter.setParameter(self.paramScript + [curval])
        except:
            pass
        self.tracesrequired = (
            math.ceil(((self.paramRange[1] - self.paramRange[0]) / self.paramStep) * self.paramRepeat) + 1
        )
        self.tracesreqChanged.emit(self.paramNum, self.tracesrequired)
Beispiel #4
0
    def findNewValue(self, mode="linear"):
        """ Find new value for this parameter """

        if str.lower(mode) == "linear":
            self.cnt += 1
            if self.cnt == self.paramRepeat:
                # Done this one, next step
                self.cnt = 0
                newval = self.paramValueItem.getValue() + self.paramStep

                if newval > self.paramRange[1]:
                    newval = self.paramRange[0]
                    self.rangeComplete.emit(self.paramNum)

                # Cast type to required value
                newval = self.paramType(newval)

                self.paramValueItem.setValue(newval)

                parameter = self.paramScript+[newval]
                try:
                    Parameter.setParameter(parameter)
                except:
                    raise StopIteration("Choose a valid Parameter Path/Value combination. Got: " + str(parameter))
        else:
            raise ValueError("Unknown Increment Type %s" % mode)
Beispiel #5
0
 def dcmTimeout(self):
     try:
         self.qtadc.sc.getStatus()
         # The following happen with signals, so a failure will likely occur outside of the try...except
         # For this reason we do the call to .getStatus() to verify USB connection first
         Parameter.setParameter(['OpenADC', 'Clock Setup', 'Refresh Status', None], blockSignal=True)
         Parameter.setParameter(['OpenADC', 'Trigger Setup', 'Refresh Status', None], blockSignal=True)
     except Exception as e:
         self.dis()
         raise e
Beispiel #6
0
 def dcmTimeout(self):
     if self.connectStatus.value():
         try:
             self.qtadc.sc.getStatus()
             # The following happen with signals, so a failure will likely occur outside of the try...except
             # For this reason we do the call to .getStatus() to verify USB connection first
             Parameter.setParameter(['OpenADC', 'Clock Setup', 'Refresh Status', None], blockSignal=True)
             Parameter.setParameter(['OpenADC', 'Trigger Setup', 'Refresh Status', None], blockSignal=True)
         except USBError:
             self.dis()
             raise Warning("Error in the scope. It may have been disconnected.")
         except Exception as e:
             self.dis()
             raise e
Beispiel #7
0
    def __init__(self, parent):
        super(GlitchExplorerDialog, self).__init__(parent)
        self.setWindowTitle("Glitch Explorer")
        self.setMinimumWidth(500)

        self.mainLayout = QVBoxLayout()
        self.mainSplitter = QSplitter(self)
        self.mainSplitter.setOrientation(Qt.Vertical)

        self.tableList = []
        self.tuneParamList = []

        #Add default table
        self.table = QTableWidget(1,1)
        # self.table.setSizePolicy(QSizePolicy.Expanding, QSizePolicy.Expanding)
        self.mainSplitter.addWidget(self.table)

        self.getParams().register()
        self.getParams().addChildren([
            {'name':'Clear Output Table', 'type':'action', 'action':self.clearTable},
            {'name':'Plot Widget', 'type':'action', 'action':self.openPlotWidget},
            {'name':'Reset', 'type':'action', 'action':self.reset, 'tip':"Resets all Tuning Parameters to its minimum value."},
            {'name':'Tuning Parameters', 'key':'numtune', 'type':'int', 'value':0, 'limits':(0, 4), 'action':self.updateParameters, 'readonly':False},
            {'name':'Traces Required', 'key':'tracesreq', 'type':'int', 'value':1, 'limits':(1, 1E99), 'readonly':True, 'children':[
                {'name':'Use this value', 'type':'action', 'action':lambda _: Parameter.setParameter(['Generic Settings', 'Acquisition Settings', 'Number of Traces',self.findParam('tracesreq').getValue()])},
             ]},
            {'name':'Normal Response', 'type':'str', 'key':'normalresp', 'value':'s.startswith("Bad")'},
            {'name':'Successful Response', 'type':'str', 'key':'successresp', 'value':'s.startswith("Welcome")'},

            {'name':'Recordings', 'type':'group', 'expanded':False, 'children':[
                {'name':'Load existing', 'type':'action', 'key':'open', 'action':lambda _:self.loadRecordings()},
                {'name':'Autosave Multi-Capture Results', 'type':'bool', 'key':'saveresults', 'value':True},
                {'name':'Autosaved filename', 'type':'str', 'key':'savefilename', 'value':'', "readonly":True},
                {'name':'Notes', 'type':'text', 'key':'savenotes', 'value':""},
            ]},
        ])

        self.paramTree = ParameterTree()
        self.paramTree.addParameters(self.getParams()._PyQtGraphParameter)
        self.mainSplitter.addWidget(self.paramTree)

        self.statusLabel = QLabel("")

        self.mainSplitter.addWidget(self.statusLabel)

        # self.mainSplitter.setHandleWidth(100)

        self.mainLayout.addWidget(self.mainSplitter)
        self.setLayout(self.mainLayout)
        self.hide()

        #Do an update
        self.table.setSizePolicy(QSizePolicy.MinimumExpanding, QSizePolicy.MinimumExpanding)
        self.table.horizontalHeader().setResizeMode(QHeaderView.Interactive)
        self.clearTable()
        self._campaignRunning = False
Beispiel #8
0
 def setParameter(self, pathAndValue):
     """Set the parameter value, given its path. It should be registered in Parameter.registeredParameters"""
     Parameter.setParameter(pathAndValue)
Beispiel #9
0
    def __init__(self, parent):
        super(GlitchExplorerDialog, self).__init__(parent)
        self.setWindowTitle("Glitch Explorer")
        self.setMinimumWidth(500)

        self.mainLayout = QVBoxLayout()
        self.mainSplitter = QSplitter(self)
        self.mainSplitter.setOrientation(Qt.Vertical)

        self.tableList = []
        self.tuneParamList = []

        # Add default table
        self.table = QTableWidget(1, 1)
        # self.table.setSizePolicy(QSizePolicy.Expanding, QSizePolicy.Expanding)
        self.mainSplitter.addWidget(self.table)

        self.getParams().register()
        self.getParams().addChildren(
            [
                {"name": "Clear Output Table", "type": "action", "action": self.clearTable},
                {"name": "Plot Widget", "type": "action", "action": self.openPlotWidget},
                {
                    "name": "Reset",
                    "type": "action",
                    "action": self.reset,
                    "tip": "Resets all Tuning Parameters to its minimum value.",
                },
                {
                    "name": "Tuning Parameters",
                    "key": "numtune",
                    "type": "int",
                    "value": 0,
                    "limits": (0, 4),
                    "action": self.updateParameters,
                    "readonly": False,
                },
                {
                    "name": "Traces Required",
                    "key": "tracesreq",
                    "type": "int",
                    "value": 1,
                    "limits": (1, 1e99),
                    "readonly": True,
                    "children": [
                        {
                            "name": "Use this value",
                            "type": "action",
                            "action": lambda _: Parameter.setParameter(
                                [
                                    "Generic Settings",
                                    "Acquisition Settings",
                                    "Number of Traces",
                                    self.findParam("tracesreq").getValue(),
                                ]
                            ),
                        }
                    ],
                },
                {"name": "Normal Response", "type": "str", "key": "normalresp", "value": 's.startswith("Bad")'},
                {
                    "name": "Successful Response",
                    "type": "str",
                    "key": "successresp",
                    "value": 's.startswith("Welcome")',
                },
                {
                    "name": "Recordings",
                    "type": "group",
                    "expanded": False,
                    "children": [
                        {
                            "name": "Load existing",
                            "type": "action",
                            "key": "open",
                            "action": lambda _: self.loadRecordings(),
                        },
                        {"name": "Autosave Multi-Capture Results", "type": "bool", "key": "saveresults", "value": True},
                        {
                            "name": "Autosaved filename",
                            "type": "str",
                            "key": "savefilename",
                            "value": "",
                            "readonly": True,
                        },
                        {"name": "Notes", "type": "text", "key": "savenotes", "value": ""},
                    ],
                },
            ]
        )

        self.paramTree = ParameterTree()
        self.paramTree.addParameters(self.getParams()._PyQtGraphParameter)
        self.mainSplitter.addWidget(self.paramTree)

        self.statusLabel = QLabel("")

        self.mainSplitter.addWidget(self.statusLabel)

        # self.mainSplitter.setHandleWidth(100)

        self.mainLayout.addWidget(self.mainSplitter)
        self.setLayout(self.mainLayout)
        self.hide()

        # Do an update
        self.table.setSizePolicy(QSizePolicy.MinimumExpanding, QSizePolicy.MinimumExpanding)
        self.table.horizontalHeader().setResizeMode(QHeaderView.Interactive)
        self.clearTable()
        self._campaignRunning = False
Beispiel #10
0
 def setParameter(self, pathAndValue):
     """Set the parameter value, given its path. It should be registered in Parameter.registeredParameters"""
     Parameter.setParameter(pathAndValue)