Exemple #1
0
def make_mock_table():
    cols = {"column0": [DOUBLE], "column1": [DOUBLE], "column2": [DOUBLE]}
    colstruct = OrderedDict(sorted(cols.items(), key=lambda t: t[0]))
    struct = OrderedDict([("labels", [STRING]), ("value", colstruct)])
    pvobj = PvObject(struct)
    pvobj.setScalarArray("labels", ["x", "y", "z"])
    return pvobj
Exemple #2
0
    def test_ScalarArray(self):
        value = TestUtility.getRandomInt()
        size = TestUtility.getRandomListSize()
        valueList = [value] * size
        pv = PvObject({'vl': [INT]}, {'vl': valueList})
        vl = pv['vl']
        assert (len(vl) == len(valueList))
        assert (vl[0] == valueList[0])
        assert (vl[-1] == valueList[-1])

        value = TestUtility.getRandomInt()
        size = TestUtility.getRandomListSize()
        valueList = [value] * size
        pv['vl'] = valueList
        vl = pv['vl']
        assert (len(vl) == len(valueList))
        assert (vl[0] == valueList[0])
        assert (vl[-1] == valueList[-1])

        value = TestUtility.getRandomInt()
        size = TestUtility.getRandomListSize()
        valueList = [value] * size
        pv.setScalarArray(valueList)
        vl = pv.getScalarArray()
        assert (len(vl) == len(valueList))
        assert (vl[0] == valueList[0])
        assert (vl[-1] == valueList[-1])
Exemple #3
0
    def test_StructureArray(self):
        STRUCTURE = {
            's': STRING,
            'i': INT,
            'ru': ({
                'i': INT,
                'd': DOUBLE,
                's': STRING
            }, ),
            'vu': (),
            'st': {
                'i': INT,
                'd': DOUBLE,
                's': STRING
            },
        }
        size = TestUtility.getRandomListSize()
        pv = PvObject({'v': [STRUCTURE]})
        structureList = []
        for i in range(0, size):
            pv2 = PvObject(STRUCTURE)
            value = TestUtility.getRandomString()
            pv2['s'] = value

            value = TestUtility.getRandomInt()
            pv2['i'] = value

            value = TestUtility.getRandomInt()
            unionPv = PvObject({'i': INT}, {'i': value})
            pv2['ru'] = unionPv

            value = TestUtility.getRandomString()
            pv2['vu'] = PvString(value)

            value = TestUtility.getRandomInt()
            pv2['st.i'] = value
            value = TestUtility.getRandomString()
            pv2['st.s'] = value
            value = TestUtility.getRandomDouble()
            pv2['st.d'] = value

            structureList.append(pv2)
        pv['v'] = structureList

        sa = pv['v']
        for i in range(0, size):
            pv2 = sa[i]
            assert (pv2['s'] == structureList[i]['s'])
            assert (pv2['i'] == structureList[i]['i'])
            ru = pv2['ru'][0]
            assert (ru['i'] == structureList[i]['ru'][0]['i'])
            vu = pv2['vu'][0]
            assert (vu['value'] == structureList[i]['vu'][0]['value'])
            assert (pv2['st']['i'] == structureList[i]['st.i'])
            assert (pv2['st']['s'] == structureList[i]['st.s'])
            assert (pv2['st']['d'] == structureList[i]['st.d'])
Exemple #4
0
 def test_UByte(self):
     value = TestUtility.getRandomUByte()
     pv = PvObject({'v': UBYTE}, {'v': value})
     assert (pv['v'] == value)
     value = TestUtility.getRandomUByte()
     pv['v'] = value
     assert (pv['v'] == value)
     value = TestUtility.getRandomUByte()
     pv.setUByte(value)
     assert (pv.getUByte() == value)
Exemple #5
0
 def test_Boolean(self):
     value = TestUtility.getRandomBoolean()
     pv = PvObject({'v': BOOLEAN}, {'v': value})
     assert (pv['v'] == value)
     value = TestUtility.getRandomBoolean()
     pv['v'] = value
     assert (pv['v'] == value)
     value = TestUtility.getRandomBoolean()
     pv.setBoolean(value)
     assert (pv.getBoolean() == value)
Exemple #6
0
 def test_String(self):
     value = TestUtility.getRandomString()
     pv = PvObject({'v': STRING}, {'v': value})
     assert (pv['v'] == value)
     value = TestUtility.getRandomString()
     pv['v'] = value
     assert (pv['v'] == value)
     value = TestUtility.getRandomString()
     pv.setString(value)
     assert (pv.getString() == value)
Exemple #7
0
 def test_Double(self):
     value = TestUtility.getRandomDouble()
     pv = PvObject({'v': DOUBLE}, {'v': value})
     TestUtility.assertDoubleEquality(pv['v'], value)
     value = TestUtility.getRandomDouble()
     pv['v'] = value
     TestUtility.assertDoubleEquality(pv['v'], value)
     value = TestUtility.getRandomDouble()
     pv.setDouble(value)
     TestUtility.assertDoubleEquality(pv.getDouble(), value)
Exemple #8
0
 def test_Float(self):
     value = TestUtility.getRandomFloat()
     pv = PvObject({'v': FLOAT}, {'v': value})
     TestUtility.assertFloatEquality(pv['v'], value)
     value = TestUtility.getRandomFloat()
     pv['v'] = value
     TestUtility.assertFloatEquality(pv['v'], value)
     value = TestUtility.getRandomFloat()
     pv.setFloat(value)
     TestUtility.assertFloatEquality(pv.getFloat(), value)
Exemple #9
0
 def test_ULong(self):
     value = TestUtility.getRandomULong()
     pv = PvObject({'v': ULONG}, {'v': value})
     assert (pv['v'] == value)
     value = TestUtility.getRandomULong()
     pv['v'] = value
     assert (pv['v'] == value)
     value = TestUtility.getRandomULong()
     pv.setULong(value)
     assert (pv.getULong() == value)
Exemple #10
0
 def test_Int(self):
     value = TestUtility.getRandomInt()
     pv = PvObject({'v': INT}, {'v': value})
     assert (pv['v'] == value)
     value = TestUtility.getRandomInt()
     pv['v'] = value
     assert (pv['v'] == value)
     value = TestUtility.getRandomInt()
     pv.setInt(value)
     assert (pv.getInt() == value)
Exemple #11
0
 def test_UShort(self):
     value = TestUtility.getRandomUShort()
     pv = PvObject({'v': USHORT}, {'v': value})
     assert (pv['v'] == value)
     value = TestUtility.getRandomUShort()
     pv['v'] = value
     assert (pv['v'] == value)
     value = TestUtility.getRandomUShort()
     pv.setUShort(value)
     assert (pv.getUShort() == value)
Exemple #12
0
    def test_VariantUnion(self):
        value = TestUtility.getRandomInt()
        pv = PvObject({'v': ()}, {'v': PvInt(value)})
        u = pv['v'][0]
        assert (u['value'] == value)

        value = TestUtility.getRandomString()
        pv['v'] = PvString(value)
        u = pv['v'][0]
        assert (u['value'] == value)

        value = TestUtility.getRandomFloat()
        pv.setUnion(PvFloat(value))
        u = pv['v'][0]
        TestUtility.assertFloatEquality(u['value'], value)
Exemple #13
0
def createImage(uniqueId, data, sizes, typecode=None):
    image = PvObject(ndarray, {'uniqueId' : uniqueId},'NTNDArray:1.0')
        #note: not truly 'epics:nt/NTNDArray:1.0' (not compliant with normative types),
        #so a simple 'NTNDArray:1.0' is used to identify it as an image
    setImage(image, data, typecode)
    setDimensions(image, sizes)
    return image
Exemple #14
0
def updateValue(pv):
    name = pv['value']
    #print("updating table for name '%s'" % name)
    newPV = PvObject(tableStructDict, copy(tablePV.get()),
                     "epics:nt/NTTable:1.0")
    value = newPV['value']
    if name is '':
        value['id'] = []
        value['name'] = names
        value['title'] = []
        for i in range(0, len(names)):
            value['id'].append(i + 1)
            value['title'].append(titles[i])
    elif name in ids:
        value['id'] = ids[name]
        value['name'] = [name] * len(value['id'])
        value['title'] = []
        for id in value['id']:
            value['title'].append(titles[id - 1])
    else:
        value['id'] = [0]
        value['name'] = [None]
        value['title'] = [None]
    #print("value = %s" % str(value))
    newPV['value'] = value
    server.update('table', newPV)
Exemple #15
0
 def test_Double(self):
     a = np.random.uniform(-9223372036854775808,
                           9223372036854775808,
                           size=100)
     pv = PvObject({'a': [DOUBLE]}, {'a': a})
     a2 = pv['a']
     c = a == a2
     assert (c.all())
Exemple #16
0
 def test_Long(self):
     a = np.random.randint(-9223372036854775808,
                           9223372036854775808,
                           size=100,
                           dtype=np.int64)
     pv = PvObject({'a': [LONG]}, {'a': a})
     a2 = pv['a']
     c = a == a2
     assert (c.all())
Exemple #17
0
 def test_Float(self):
     a = np.random.uniform(-9223372036854775808,
                           9223372036854775808,
                           size=100)
     a = a.astype(np.float32)
     pv = PvObject({'a': [FLOAT]}, {'a': a})
     a2 = pv['a']
     c = a == a2
     assert (c.all())
Exemple #18
0
 def test_ULong(self):
     a = np.random.randint(0,
                           18446744073709551616,
                           size=100,
                           dtype=np.uint64)
     pv = PvObject({'a': [ULONG]}, {'a': a})
     a2 = pv['a']
     c = a == a2
     assert (c.all())
Exemple #19
0
    def test_VariantUnionArray(self):
        size = TestUtility.getRandomListSize()
        pv = PvObject({'v': [()]})
        unionList = []
        for i in range(0, size):
            value = TestUtility.getRandomInt()
            unionList.append(PvInt(value))

        pv['v'] = unionList
        ul = pv['v']
        for i in range(0, size):
            uli = ul[i][0]
            assert (uli['value'] == unionList[i]['value'])

        unionList.reverse()
        pv.setUnionArray(unionList)
        ul = pv.getUnionArray()
        for i in range(0, size):
            uli = ul[i]
            assert (uli['value'] == unionList[i]['value'])
Exemple #20
0
    def test_Structure(self):
        pv = PvObject({
            's': STRING,
            'i': INT,
            'ru': ({
                'i': INT,
                'd': DOUBLE,
                's': STRING
            }, ),
            'vu': (),
            'st': {
                'i': INT,
                'd': DOUBLE,
                's': STRING
            },
        })
        value = TestUtility.getRandomString()
        pv['s'] = value
        assert (pv['s'] == value)

        value = TestUtility.getRandomInt()
        pv['i'] = value
        assert (pv['i'] == value)

        value = TestUtility.getRandomInt()
        unionPv = PvObject({'i': INT}, {'i': value})
        pv['ru'] = unionPv
        u = pv['ru'][0]
        assert (u['i'] == value)

        value = TestUtility.getRandomString()
        pv['vu'] = PvString(value)
        u = pv['vu'][0]
        assert (u['value'] == value)

        value = TestUtility.getRandomInt()
        pv['st.i'] = value
        assert (pv['st.i'] == value)
Exemple #21
0
def createImage(uniqueId,
                data,
                sizes,
                typecode=None,
                offsets=repeat(0),
                binnings=repeat(1),
                reverses=repeat(False),
                codec={},
                attribute=[{}]):
    image = PvObject(ntndarray, {'uniqueId': uniqueId},
                     'epics:nt/NTNDArray:1.0')
    setCodec(image, codec)
    #setAttribute(image, attribute)
    setImage(image, data, typecode)
    setDimensions(image, sizes, offsets, binnings, reverses)

    return image
Exemple #22
0
    def test_RestrictedUnion(self):
        value = TestUtility.getRandomInt()
        unionPv = PvObject({'i': INT}, {'i': value})
        pv = PvObject({'v': ({
            'i': INT,
            'f': FLOAT,
            's': STRING
        }, )}, {'v': unionPv})
        u = pv['v'][0]
        assert (u['i'] == value)

        value = TestUtility.getRandomString()
        unionPv = PvObject({'s': STRING}, {'s': value})
        pv['v'] = unionPv
        u = pv['v'][0]
        assert (u['s'] == value)

        value = TestUtility.getRandomFloat()
        unionPv = PvObject({'f': FLOAT}, {'f': value})
        pv.setUnion(unionPv)
        u = pv['v'][0]
        TestUtility.assertFloatEquality(u['f'], value)
Exemple #23
0
def startPvaServer():

    roachsets = PvObject({
        'atU6': INT,
        'atU7': INT,
        'atU28': INT,
        'bbloop': INT,
        'rfloop': INT,
        'extLO': INT,
        'centfreq': DOUBLE,
        'spanfreq': DOUBLE,
        'isconnected': INT,
        'status': STRING
    })

    roachconn = PvInt(0)
    roachdisconn = PvInt(0)

    roachsweep = PvInt(0)

    pvaServer = PvaServer('DP:roach1:settings', roachsets)
    pvaServer.addRecord('DP:roach1:connect', roachconn)
    pvaServer.addRecord('DP:roach1:disconnect', roachdisconn)
    pvaServer.addRecord('DP:roach1:sweep', roachsweep)
Exemple #24
0
    def test_RestrictedUnionArray(self):
        size = TestUtility.getRandomListSize()
        pv = PvObject({'v': [({'i': INT, 's': STRING, 'd': DOUBLE}, )]})
        unionList = []
        for i in range(0, size):
            if i % 3 == 0:
                value = TestUtility.getRandomInt()
                unionList.append(PvObject({'i': INT}, {'i': value}))
            elif i % 3 == 1:
                value = TestUtility.getRandomString()
                unionList.append(PvObject({'s': STRING}, {'s': value}))
            else:
                value = TestUtility.getRandomDouble()
                unionList.append(PvObject({'d': DOUBLE}, {'d': value}))

        pv['v'] = unionList
        ul = pv['v']
        for i in range(0, size):
            uli = ul[i][0]
            if 'i' in uli:
                assert (uli['i'] == unionList[i]['i'])
            elif 's' in uli:
                assert (uli['s'] == unionList[i]['s'])
            else:
                TestUtility.assertDoubleEquality(uli['d'], unionList[i]['d'])

        unionList.reverse()
        pv.setUnionArray(unionList)
        ul = pv['v']
        for i in range(0, size):
            uli = ul[i][0]
            if 'i' in uli:
                assert (uli['i'] == unionList[i]['i'])
            elif 's' in uli:
                assert (uli['s'] == unionList[i]['s'])
            else:
                TestUtility.assertDoubleEquality(uli['d'], unionList[i]['d'])
Exemple #25
0
highWarningLimit = 6
highAlarmLimit = 8
lowAlarmSeverity = 2
lowWarningSeverity = 1
highWarningSeverity = 1
highAlarmSeverity = 2

messages = ["NO_ALARM", "LOLO", "LO", "HI", "HIHI"]

#get an int structure, and add the optional fields timeStamp and alarm
rampStructure = PvInt().getStructureDict()
rampStructure['timeStamp'] = timeStamp.getStructureDict()
rampStructure['alarm'] = alarm.getStructureDict()

#create an int PV with value 0
ramp = PvObject(rampStructure, {'value': 0}, 'epics:nt/NTScalar:1.0')

server = PvaServer('ramp', ramp)

while True:
    #update ramp value dict instead of ramp, so all values update at once
    rampValue = ramp.get()
    #print(str(rampValue))

    value = rampValue['value']
    rampValue['value'] = (value + 1) % 10

    fraction, secs = math.modf(time.time())
    timeStamp.setSecondsPastEpoch(long(secs))
    timeStamp.setNanoseconds(int(fraction * 1000000000))
    rampValue['timeStamp'] = timeStamp.get()
Exemple #26
0
#!/usr/bin/env python

#
# This example can be used to demonstrate pvaPy server/client channel
# monitoring
#
# Run server.py in one window, and client.py in another one.
#

import time
from pvaccess import ULONG
from pvaccess import PvObject
from pvaccess import PvaServer

if __name__ == '__main__':
    pv = PvObject({'c': ULONG})
    server = PvaServer('counter', pv)
    c = 0
    startTime = time.time()
    while True:
        c += 1
        pv = PvObject({'c': ULONG}, {'c': c})
        server.update(pv)
        if c % 100000 == 0:
            currentTime = time.time()
            runtime = currentTime - startTime
            updateRateKHz = c / runtime / 1000.0
            print('Runtime: %.2f; Counter: %9d, Rate: %.2f [kHz]' %
                  (runtime, c, updateRateKHz))
Exemple #27
0
        for id in value['id']:
            value['title'].append(titles[id - 1])
    else:
        value['id'] = [0]
        value['name'] = [None]
        value['title'] = [None]
    #print("value = %s" % str(value))
    newPV['value'] = value
    server.update('table', newPV)


# create PVs
tableStructDict = {
    'labels': [STRING],
    'value':
    dict(OrderedDict([('id', [UINT]), ('name', [STRING]),
                      ('title', [STRING])]))
}
tablePV = PvObject(tableStructDict, "epics:nt/NTTable:1.0")
tablePV['labels'] = ['ID', 'Name', 'Title']
namePV = PvString('')

# create server
server = PvaServer('table', tablePV)
server.addRecord('name', namePV, updateValue)

try:
    raw_input("\nEnter anything to quit\n")
except NameError as ex:
    input("\nEnter anything to quit\n")
Exemple #28
0
#!/usr/bin/env python

#
# This example can be used to demonstrate pvaPy server with multiple channels.
#

import time
from pvaccess import ULONG
from pvaccess import STRING
from pvaccess import PvObject
from pvaccess import PvaServer

if __name__ == '__main__':
    server = PvaServer()
    pv = PvObject({'c': ULONG})
    server.addRecord('c', pv)
    pv2 = PvObject({'c2': STRING})
    server.addRecord('c2', pv2)
    print('CHANNELS: %s' % server.getRecordNames())
    c = 0
    startTime = time.time()
    while True:
        c += 1
        pv = PvObject({'c': ULONG}, {'c': c})
        server.update('c', pv)
        pv2 = PvObject({'c2': STRING}, {'c2': str(c)})
        server.update('c2', pv2)
        if c % 100000 == 0:
            currentTime = time.time()
            runtime = currentTime - startTime
            updateRateKHz = c / runtime / 1000.0
Exemple #29
0
#!/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)
Exemple #30
0
from pvaccess import PvObject, STRING, DOUBLE, NtTable

import pvaccess

pvObject = PvObject({'labels' : [STRING], 'value' : {'column0' : [DOUBLE], 'column1' : [DOUBLE], 'column2' : [DOUBLE]}})

pvObject.setScalarArray('labels', ['x', 'y', 'z'])
pvObject.setStructure('value', {'column0' : [0.1, 0.2, 0.3], 'column1' : [1.1, 1.2, 1.3], 'column2' : [2.1, 2.2, 2.3]})
table3 = NtTable(pvObject)

print table3

rpc = pvaccess.RpcClient('table')
request = table3

rpc.invoke(request)

Exemple #31
0
# Example of pvAccess Server in Python

from time import sleep
from pvaccess import PvObject, INT, PvaServer

print("This serves pva://pair")
print("")
print("Try")
print("   pvinfo pair")
print("   pvget -m -r \"x, y\" pair")
print("")
print("or open examples/displays/PVA_Server.bob")
print("")

pv = PvObject({'x': INT, 'y': INT})

server = PvaServer('pair', pv)

x = 1
while True:
    pv['x'] = x
    pv['y'] = 2 * x
    print(x, 2 * x)
    server.update(pv)
    sleep(1)
    x = x + 1
Exemple #32
0
from pvaccess import PvObject, STRING, DOUBLE, NtTable

import pvaccess

pvObject = PvObject({
    'labels': [STRING],
    'value': {
        'column0': [DOUBLE],
        'column1': [DOUBLE],
        'column2': [DOUBLE]
    }
})

pvObject.setScalarArray('labels', ['x', 'y', 'z'])
pvObject.setStructure(
    'value', {
        'column0': [0.1, 0.2, 0.3],
        'column1': [1.1, 1.2, 1.3],
        'column2': [2.1, 2.2, 2.3]
    })
table3 = NtTable(pvObject)

print table3

rpc = pvaccess.RpcClient('table')
request = table3

rpc.invoke(request)