Beispiel #1
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 #2
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 #3
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 #4
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 #5
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 #6
0
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")
Beispiel #7
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)

    print('SUBSCRIBE M2 for X1\n')
Beispiel #8
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 #9
0
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())
Beispiel #10
0
#!/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'