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
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)
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)
def getStringChannel(cls): return Channel('exampleString')
def getFloatChannel(cls): return Channel('exampleFloat')
def getUIntChannel(cls): return Channel('exampleUInt')
def getUByteChannel(cls): return Channel('exampleUByte')
def __init__(self, channelName): self.channelName = channelName self.channel = Channel(self.channelName) self.isConnected = False self.clientConnectionCallback = None
def getBooleanChannel(cls): return Channel(TestServer.BOOLEAN_CHANNEL_NAME)
#!/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"])
#!/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)
#!/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)
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)
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'))
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())
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)
def getUByteChannel(cls): return Channel(TestServer.UBYTE_CHANNEL_NAME)
def getUShortChannel(cls): return Channel(TestServer.USHORT_CHANNEL_NAME)
def getBooleanChannel(cls): return Channel('exampleBoolean')
def getUIntChannel(cls): return Channel(TestServer.UINT_CHANNEL_NAME)
def getUShortChannel(cls): return Channel('exampleUShort')
def getULongChannel(cls): return Channel(TestServer.ULONG_CHANNEL_NAME)
def getULongChannel(cls): return Channel('exampleULong')
def getFloatChannel(cls): return Channel(TestServer.FLOAT_CHANNEL_NAME)
def getDoubleChannel(cls): return Channel('exampleDouble')
def getDoubleChannel(cls): return Channel(TestServer.DOUBLE_CHANNEL_NAME)
#!/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]
def getStringChannel(cls): return Channel(TestServer.STRING_CHANNEL_NAME)
#!/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)
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)
#!/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: