#!/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"])
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)
#!/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 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"])
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) print("Attempting get")
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) print('SUBSCRIBE M2 for X1\n')
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'))
from pvaccess import Channel, CA, PvTimeStamp, PvAlarm channel = Channel('PVRdouble') print('start value=', channel.get('value,alarm,timeStamp')) for i in range(5): channel.put(i) print('after put value=', channel.get())
#!/usr/bin/env python from pvaccess import Channel name = "PVRbyte" chan = Channel(name) str1 = 'value=' + '20' args = [str1] chan.parsePut(args, "value", True) result = chan.get("value") print(result) name = "PVRstring" chan = Channel(name) str1 = 'value=' + '"this is a string"' args = [str1] chan.parsePut(args, "value", True) result = chan.get("value") print(result) name = "PVRenum" chan = Channel(name) str1 = 'value=' + 'one' args = [str1] chan.parsePut(args, "value", False) result = chan.get("value,alarm,timeStamp") print(result) name = "PVRBigRecord" chan = Channel(name) str1 = 'scalar.double.value=' + '10'