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"]) print("putting", pv) c.put(pv) pv = c.get() print("received", pv) print("value:", pv.get()) print("class:", pv.__class__.__name__) print('selected field: ', pv.getSelectedUnionFieldName()) # This should fail
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"]) print("putting",pv) c.put(pv) pv = c.get() print("received",pv) print("value:",pv.get()) print("class:",pv.__class__.__name__) print('selected field: ', pv.getSelectedUnionFieldName()) # This should fail
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) value = oldValue + 10 print('Putting value via putByte(): ', value) c.putByte(chr(value)) newValue = ord(c.get().getByte()) print('Got new value: ', newValue)
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") print(channel.get())
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())