class MandelbrotCreate():
    def __init__(self, channelName):
        self.channelName = channelName
        self.channel = Channel(self.channelName)
        self.isConnected = False
        self.clientConnectionCallback = None

    def start(self):
        self.channel.setConnectionCallback(self.connectionCallback)

    def addClientConnectionCallback(self, clientConnectionCallback):
        print('addClientConnectionCallback')
        self.clientConnectionCallback = clientConnectionCallback
        print('self.clientConnectionCallback=', self.clientConnectionCallback)
        self.clientConnectionCallback.connectionCallback(self.isConnected)

    def connectionCallback(self, arg):
        print('connectionCallback arg=', arg)
        self.isConnected = arg
        if self.clientConnectionCallback != None:
            self.clientConnectionCallback.connectionCallback(arg)

    def checkConnected(self):
        return self.isConnected

    def createImage(self, arg):
        xmin = arg[0]
        xmax = arg[1]
        ymin = arg[2]
        ymax = arg[3]
        imageSize = arg[4]
        nz = arg[5]
        argxmin = 'argument.xmin=' + str(xmin)
        argxmax = 'argument.xmax=' + str(xmax)
        argymin = 'argument.ymin=' + str(ymin)
        argymax = 'argument.ymax=' + str(ymax)
        argimageSize = 'argument.imageSize=' + str(imageSize)
        argnz = 'argument.nz=' + str(nz)
        args = [argxmin, argxmax, argymin, argymax, argimageSize, argnz]
        result = self.channel.parsePutGet(
            args, "putField(argument)getField(result)", True)
        val = result['result.value']
        val = np.array(val, dtype='uint8')
        if nz == 3:
            image = np.reshape(val, (imageSize, imageSize, 3))
        else:
            image = np.reshape(val, (imageSize, imageSize))
        return image
Beispiel #2
0

if __name__ == '__main__':
    runtime = 60
    nChannels = 1
    if len(sys.argv) > 1:
        nChannels = int(sys.argv[1])
    if len(sys.argv) > 2:
        runtime = float(sys.argv[2])
    outputMark = int(runtime / 5)

    channelMap = OrderedDict()
    for channelCnt in range(1, nChannels + 1):
        channelName = 'X%s' % channelCnt
        #c = Channel(channelName, CA)
        c = Channel(channelName)
        #print('CONNECT TO %s:\n%s\n' % (channelName, c.get()))
        m = ScaleMonitor(channelName, outputMark)
        c.subscribe('m%s' % channelName, m.monitor)
        channelMap[channelName] = (c, m)

    # Monitor
    print('STARTING MONITORS\n')
    t0 = time.time()
    channelCount = 0
    for cName, (c, m) in channelMap.items():
        print('STARTING MONITOR for %s\n' % (cName))
        c.startMonitor()
        channelCount += 1
        if channelCount % 1000 == 0:
            time.sleep(1)
Beispiel #3
0
        dataRate = self.arraySize * self.nReceivedArrays / float(
            MEGA_BYTE) / deltaT
        averageMissed = self.nTotalMissedArrays / float(self.nReceivedArrays)
        self.missedArraysStats.add(nMissedArrays)
        if self.nReceivedArrays % 100 == 0:
            print 'NTNDARRAY ID %s; Arrays Missed: %s (Average Missed Per Cycle: %s, Max. Missed Per Cycle: %s, Total Missed: %s), Total Received: %s; Array Receiving Rate: %s [Hz], Data Receiving Rate: %s [MB/s]; Runtime: %s [s]' % (
                arrayId, nMissedArrays, averageMissed, self.maxMissedArrays,
                self.nTotalMissedArrays, self.nReceivedArrays, arrayRate,
                dataRate, deltaT)
            self.missedArraysStats.calculate()
            print self.missedArraysStats
            print


if __name__ == '__main__':
    maxQueueSize = 10
    c = Channel('srfb_ndarray')
    c.setMonitorMaxQueueLength(maxQueueSize)
    for i in range(0, 100):
        print "TEST: ", i
        srfbMonitor = SrfbMonitor(10 * (maxQueueSize + 1))
        c.subscribe('monitor', srfbMonitor.monitor)
        c.startMonitor('')
        time.sleep(10)
        print "Stopping monitor"
        c.stopMonitor()
        print "Unsubscribing monitor"
        c.unsubscribe('monitor')
        print "TEST: ", i, " DONE"
        time.sleep(3)
Beispiel #4
0
 def getStringChannel(cls):
     return Channel('exampleString')
Beispiel #5
0
 def getFloatChannel(cls):
     return Channel('exampleFloat')
Beispiel #6
0
 def getUIntChannel(cls):
     return Channel('exampleUInt')
Beispiel #7
0
 def getUByteChannel(cls):
     return Channel('exampleUByte')
 def __init__(self, channelName):
     self.channelName = channelName
     self.channel = Channel(self.channelName)
     self.isConnected = False
     self.clientConnectionCallback = None
Beispiel #9
0
 def getBooleanChannel(cls):
     return Channel(TestServer.BOOLEAN_CHANNEL_NAME)
Beispiel #10
0
#!/usr/bin/env python

from __future__ import print_function

from pvaccess import Channel

print('****************************')
print('Testing union')
c = Channel('exampleRegularUnion')
pv = c.get()
print("original value",pv)
isVariant = pv.isUnionVariant()
if isVariant==True :
    print(channelName,"is not a regular union")
    exit
print("union introspection: ")
print(pv.getStructureDict())

names = pv.getUnionFieldNames()
print("union fieldNames",names)
value = pv.selectUnionField(names[0])
value.setString("new value")
value = pv.getUnion()
print("putting",pv)
c.put(pv)
pv = c.get()
print("received",pv)
print("value:",pv.get())
value = pv.selectUnionField(names[1])
print('selected field: ', pv.getSelectedUnionFieldName())
value.setScalarArray(["aaaa","bbbbb","ccccc"])
Beispiel #11
0
#!/usr/bin/env python

from __future__ import print_function

from pvaccess import Channel

print('****************************')
print('Testing string')
c = Channel('string01')
oldValue = c.get().getString()
print('Got old value: ', oldValue)
value = oldValue + '; a'
print('Putting value: ', value)
c.putString(value) 
newValue = c.get().getString()
print('Got new value: ', newValue)
assert newValue == value

value = oldValue + '; b'
print('Putting value: ', value)
c.put(value) 
newValue = c.get().getString()
print('Got new value: ', newValue)
assert newValue == value

print()
print('****************************')
print('Testing byte')
c = Channel('byte01')
oldValue = ord(c.get().getByte())
print('Got old value: ', oldValue)
Beispiel #12
0
#!/usr/bin/env python

import time
from pvaccess import PvObject, PvaServer, INT, Channel


def echo(x):
    print('Got value: %s' % x)


data = PvObject({'value': INT}, {'value': 1})
data2 = PvObject({'value': INT}, {'value': 2})
print("Starting Server")
server = PvaServer('foo', data, echo)
channel = Channel('foo')
print("Attempting get")
print(channel.get())
print("Attempting put")
channel.put(data2)

print("Put done")
print(channel.get())

print("Stopping server")
server.stop()
time.sleep(3)

print("Starting server")
server.start()
time.sleep(3)
Beispiel #13
0
        if self.nReceived % 10 == 0:
            currentTime = time.time()
            deltaT = currentTime - self.startTime
            self.receiveRateHz = self.nReceived / deltaT
            self.percentageMissed = self.nMissed / (self.nReceived +
                                                    self.nMissed) * 100.0

        if self.nReceived % 10 == 0:
            print(self.toString())


if __name__ == '__main__':
    RUNTIME = 60
    channelName = 'X1'
    c = Channel(channelName)
    print('CONNECT TO %s:\n%s\n' % (channelName, c.get()))
    m = ScaleMonitor(channelName)
    c.subscribe('m', m.monitor)

    # Monitor
    print('STARTING MONITOR for X1\n')
    c.startMonitor()
    time.sleep(10)
    print('SUBSCRIBE M2 for X1\n')
    c.subscribe('m2', m.monitor2)
    time.sleep(10)
    c.unsubscribe('m2')
    print('UNSUBSCRIBE M2 for X1\n')
    time.sleep(10)
Beispiel #14
0
from pvaccess import Channel, PvAlarm
channel = Channel('PVRdouble')
alarm = PvAlarm(1, 2, "message")
print('alarm=', alarm)
channel.put(alarm, 'alarm')
print('after put alarm value\n', channel.get('alarm'))
alarm = PvAlarm(0, 0, "")
print('alarm=', alarm)
channel.put(alarm, 'alarm')
print('after put alarm value/n', channel.get('alarm'))
Beispiel #15
0
            deltaT = currentTime - self.startTime
            self.receiveRateKHz = self.nReceived / deltaT / 1000.0
            self.percentageMissed = (self.nMissed * 100.0) / (self.nReceived +
                                                              self.nMissed)

        if self.nReceived % 100000 == 0:
            print(self.toString())


if __name__ == '__main__':
    runtime = 60
    if len(sys.argv) > 1:
        runtime = float(sys.argv[1])

    channelName = 'counter'
    c = Channel(channelName)
    #print('CONNECT TO %s:\n%s\n' % (channelName, c.get()))
    m = ClientMonitor(channelName)

    t0 = time.time()
    print('STARTING MONITOR for %s at %s\n' % (channelName, t0))
    #c.monitor(m.monitor)
    c.monitor(m.monitor, 'field(c)')
    time.sleep(runtime)
    c.stopMonitor()
    t1 = time.time()
    deltaT = t1 - t0
    print('STOP MONITOR at %s\n' % t1)

    print('FINAL STATS:')
    print(m.toString())
Beispiel #16
0
if __name__ == '__main__':
    nChannels = 2
    provider = "pva"
    if len(sys.argv) > 1:
        nChannels = int(sys.argv[1])
    if len(sys.argv) > 2:
        provider = sys.argv[2]
    nameList = list()
    channelList = list()
    monitorList = list()
    startTime = time.time()
    for channelCnt in range(1,nChannels+1):
        channelName = 'X%s' % channelCnt
        nameList.append(channelName)
        if provider == "ca" :
            c = Channel(channelName,CA)
        else :
            c = Channel(channelName)
        channelList.append(c);
        m = ScaleMonitor(channelName)
        monitorList.append(m);
    for i in range(nChannels):
        name = nameList[i]
        chan = channelList[i]
        m = monitorList[i]
        chan.subscribe(name, m.monitor)
    for i in range(nChannels):
        chan = channelList[i]
        chan.startMonitor()
        if i % 500 == 0:
            time.sleep(.5)
Beispiel #17
0
 def getUByteChannel(cls):
     return Channel(TestServer.UBYTE_CHANNEL_NAME)
Beispiel #18
0
 def getUShortChannel(cls):
     return Channel(TestServer.USHORT_CHANNEL_NAME)
Beispiel #19
0
 def getBooleanChannel(cls):
     return Channel('exampleBoolean')
Beispiel #20
0
 def getUIntChannel(cls):
     return Channel(TestServer.UINT_CHANNEL_NAME)
Beispiel #21
0
 def getUShortChannel(cls):
     return Channel('exampleUShort')
Beispiel #22
0
 def getULongChannel(cls):
     return Channel(TestServer.ULONG_CHANNEL_NAME)
Beispiel #23
0
 def getULongChannel(cls):
     return Channel('exampleULong')
Beispiel #24
0
 def getFloatChannel(cls):
     return Channel(TestServer.FLOAT_CHANNEL_NAME)
Beispiel #25
0
 def getDoubleChannel(cls):
     return Channel('exampleDouble')
Beispiel #26
0
 def getDoubleChannel(cls):
     return Channel(TestServer.DOUBLE_CHANNEL_NAME)
Beispiel #27
0
#!/usr/bin/env python

from pvaccess import Channel

name = "PVRbyte"
print(str("starting " + name))
chan = Channel(name)
str1 = 'value=' + '20'
str2 = '{"timeStamp":{"userTag":"30"}}'
args = [str1, str2]
result = chan.parsePutGet(args, "putField(value,timeStamp)getField()", True)
print(result.toJSON(True))
print(result.toJSON(False))
print("")

name = "PVRbyteArray"
print(str("starting " + name))
chan = Channel(name)
str1 = 'value=' + '[1,2,3,4,5,6]'
args = [str1]
result = chan.parsePutGet(args, "putField(value)getField()", True)
print(result.toJSON(True))
print(result.toJSON(False))
print("")

name = "PVRBigRecord"
print(str("starting " + name))
chan = Channel(name)
str1 = 'scalar.double.value=' + '10'
str2 = 'scalarArray.double.value=' + '[10,20,30]'
args = [str1, str2]
Beispiel #28
0
 def getStringChannel(cls):
     return Channel(TestServer.STRING_CHANNEL_NAME)
Beispiel #29
0
#!/usr/bin/env python

from pvaccess import Channel

chan = Channel('PVRdouble')
str1 = 'value=' + '20'
str2 = '{"timeStamp":{"userTag":"30"}}'
args = [str1, str2]
chan.parsePut(args, "value,timeStamp", True)

result = chan.get("value,timeStamp")
print(result)
Beispiel #30
0
        self.startTime = None

    def updateServer(self, x):
        t = time.time()
        self.server.update(x)
        self.received += 1
        id = x['ArrayId']
        if not self.prevId:
            self.startTime = t
        if self.prevId:
            missed = id - self.prevId - 1
            self.missed += missed
            dt = t - self.prevTime
            currentRate = 1.0/dt
            if self.received % 1000 ==0:
                deltaT = t - self.startTime
                averageArrayRate = self.received/deltaT
                print('Runtime: %.3f [s], Received Arrays: %s, Missed Arrays: %s, Missed Arrays Since Last: %s, Current Array Rate: %.3f [Hz], Average Array Rate: %.3f [Hz]' % (deltaT, self.received, self.missed, missed, currentRate, averageArrayRate))
        self.prevId = id
        self.prevTime = t

c = Channel('server1_data')
pv = c.get('')
s = PvaServer('server2_data', pv)
updater = ServerUpdater(s)
c.monitor(updater.updateServer, '')

time.sleep(100) 


Beispiel #31
0
#!/usr/bin/env python

from __future__ import print_function

from pvaccess import Channel

print('****************************')
print('Testing union')
c = Channel('exampleRegularUnion')
pv = c.get()
print("original value", pv)
isVariant = pv.isUnionVariant()
if isVariant == True:
    print(channelName, "is not a regular union")
    exit
print("union introspection: ")
print(pv.getStructureDict())

names = pv.getUnionFieldNames()
print("union fieldNames", names)
value = pv.selectUnionField(names[0])
value.setString("new value")
value = pv.getUnion()
print("putting", pv)
c.put(pv)
pv = c.get()
print("received", pv)
print("value:", pv.get())
value = pv.selectUnionField(names[1])
print('selected field: ', pv.getSelectedUnionFieldName())
value.setScalarArray(["aaaa", "bbbbb", "ccccc"])
    epics_queue_toroach.put({'conn':x.getInt()})

def roach_disconn_callback(x):
    print 'disconn'
    epics_queue_toroach.put({'disconn':x.getInt()})

def roachsetscallback(rsets):
    print 'settings' 
    #print type(rsets)
    #print rsets.toDict()
    epics_queue_toroach.put({'settings':rsets.toDict()})

makeQueues()
startPvaServer()

roachsetsmon = Channel('DP:roach1:settings')
roachsetsmon.monitor(roachsetscallback,'')

c2= Channel('DP:roach1:sweep')
c2.monitor(roach_sweep_callback,'')

c3= Channel('DP:roach1:disconnect')
c3.monitor(roach_disconn_callback,'')

c4= Channel('DP:roach1:connect')
c4.monitor(roach_conn_callback,'')



xxx="""
do this: