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