Full Example Root Code

class ExampleRoot(pyrogue.Root):

    def __init__(self, epics4En=False):
        self._scnt = 0
        self._sdata = np.zeros(100,dtype=np.float64)

        self._fig = None
        self._ax = None
        pyrogue.Root.__init__(self,
                            description="Example Root",
                            timeout=2.0,
                            pollEn=True)

        # Use a memory space emulator
        sim = rogue.interfaces.memory.Emulate(4,0x1000)
        sim.setName("SimSlave")
        self.addInterface(sim)

        # Add Device
        self.add(pyrogue.examples.AxiVersion(memBase=sim,
                                            guiGroup='TestGroup',
                                            offset=0x0))
        self.add(pyrogue.examples.LargeDevice(guiGroup='TestGroup'))

        # Create configuration stream
        stream = pyrogue.interfaces.stream.Variable(root=self)

        # PRBS Transmitter
        self._prbsTx = pyrogue.utilities.prbs.PrbsTx()
        self.add(self._prbsTx)

        # Add Data Writer, configuration goes to channel 1
        self._fw = pyrogue.utilities.fileio.StreamWriter(configStream={1: stream},rawMode=True)
        self.add(self._fw)
        self._prbsTx >> self._fw.getChannel(0)

        # Data Receiver
        drx = pyrogue.DataReceiver()
        self._prbsTx >> drx
        self.add(drx)

        # Add Run Control
        self.add(pyrogue.RunControl())

        # Add zmq server
        self.zmqServer = pyrogue.interfaces.ZmqServer(root=self, addr='127.0.0.1', port=0)
        self.addInterface(self.zmqServer)

        # Add process controller
        p = pyrogue.Process()
        p.add(pyrogue.LocalVariable(name='Test1',value=''))
        p.add(pyrogue.LocalVariable(name='Test2',value=''))
        self.add(p)

        #self.AxiVersion.AlarmTest.addToGroup('NoServe')

        self.add(pyrogue.LocalVariable(
            name = 'TestPlot',
            mode = 'RO',
            pollInterval=1.0,
            localGet = self._mySin,
            minimum=-1.0,
            maximum=1.0,
            disp='{:1.2f}',
            value = 0.0))

        self.add(pyrogue.LocalVariable(
            name = 'TestXAxis',
            mode = 'RO',
            pollInterval=1.0,
            localGet = self._myXAxis,
            disp='{:1.2f}',
            value = 1.0))

        self.add(pyrogue.LocalVariable(
            name = 'TestArray',
            mode = 'RO',
            pollInterval=1.0,
            localGet = self._myArray,
            disp='{:1.2f}'))
            #value = np.zeros(100,dtype=np.float64)))

        self.add(pyrogue.LinkVariable(
            name = 'TestPlotFigure',
            mode = 'RO',
            dependencies = [self.TestArray],
            linkedGet = self._getPlot))

        if epics4En:
            self._epics4=pyrogue.protocols.epicsV4.EpicsPvServer(base="test", root=self,incGroups=None,excGroups=None)
            self.addProtocol(self._epics4)

        # Remote memory command slave example
        osSlave = pyrogue.examples.OsMemSlave()
        osSlave.setName("OsSlave")
        self.addInterface(osSlave)
        self.add(pyrogue.examples.OsMemMaster(memBase=osSlave))