def setup_pv(pvname, con_cb=None, mon_cb=None, signal=None, mon_cb_once=False): """ Initialize an EPICS PV using psp with proper callbacks. :param pvname: EPICS PV name :type pvname: str :param con_cb: Connection callback. If left as None and provided with signal, emit our value from signal as the callback. :type con_cb: function(isconnected=None) :param mon_cb: Monitor callback. If left as None and provided with signal, emit our value from signal as the callback. :type mon_cb: function(errors=None) :param signal: Signal to emit our value on as the default callback when con_cb or mon_cb are left as None. Check the base :class:`PyDMConnection` class for available signals. :type signal: pyqtSignal :param mon_cb_once: True if we only want the monitor callback to run once. :type mon_cb_once: bool :rtype: Pv """ pv = Pv(pvname, use_numpy=True) if signal is None: default_mon_cb = lambda e: None else: default_mon_cb = generic_mon_cb(pv, signal) pv.add_connection_callback(con_cb or generic_con_cb(pv)) pv.add_monitor_callback(mon_cb or default_mon_cb, once=mon_cb_once) pv.connect(None) return pv
def setup_pv(pvname, con_cb=None, mon_cb=None, rwaccess_cb=None, signal=None, mon_cb_once=False): """ Initialize an EPICS PV using psp with proper callbacks. :param pvname: EPICS PV name :type pvname: str :param con_cb: Connection callback. If left as None and provided with signal, emit our value from signal as the callback. :type con_cb: function(isconnected=None) :param mon_cb: Monitor callback. If left as None and provided with signal, emit our value from signal as the callback. :type mon_cb: function(errors=None) :param rwaccess_cb: Read/write access state callback. :type rwaccess_cb: function(access_state) :param signal: Signal to emit our value on as the default callback when con_cb or mon_cb are left as None. Check the base :class:`PyDMConnection` class for available signals. :type signal: Signal :param mon_cb_once: True if we only want the monitor callback to run once. :type mon_cb_once: bool :rtype: Pv """ pv = Pv(pvname, use_numpy=True) if signal is None: default_mon_cb = lambda e: None else: default_mon_cb = generic_mon_cb(pv, signal) pv.add_connection_callback(con_cb or generic_con_cb(pv)) pv.add_monitor_callback(mon_cb or default_mon_cb, once=mon_cb_once) if rwaccess_cb: pv.add_rwaccess_callback(rwaccess_cb) pv.connect(None) return pv
def dopv(self, name, gui, format): pv = Pv(name, initialize=True) if pv != None: gui.setText("") pv.gui = gui pv.format = format self.pvlist.append(pv) pv.add_monitor_callback(lambda e: self.displayPV(pv, e)) try: pv.wait_ready(0.5) pv.monitor() except: pass