update examples
This commit is contained in:
@ -14,3 +14,11 @@ record(longin, "$(P)val:b") {
|
|||||||
field(DTYP, "Python Device")
|
field(DTYP, "Python Device")
|
||||||
field(INP , "@test2 AAAA")
|
field(INP , "@test2 AAAA")
|
||||||
}
|
}
|
||||||
|
|
||||||
|
record(waveform, "$(P)wf") {
|
||||||
|
field(DTYP, "Python Device")
|
||||||
|
field(INP , "@test3")
|
||||||
|
field(FTVL, "FLOAT")
|
||||||
|
field(NELM, "10")
|
||||||
|
field(SCAN, "2 second")
|
||||||
|
}
|
||||||
|
@ -2,8 +2,9 @@
|
|||||||
class MySup(object):
|
class MySup(object):
|
||||||
def __init__(self, rec):
|
def __init__(self, rec):
|
||||||
self.val = rec.field('VAL')
|
self.val = rec.field('VAL')
|
||||||
|
print rec,self.val.fieldinfo()
|
||||||
|
print 'VAL',self.val.getval()
|
||||||
def process(self, rec, reason):
|
def process(self, rec, reason):
|
||||||
print 'test1 proc',rec.name(),reason
|
|
||||||
self.val.putval(1+self.val.getval())
|
self.val.putval(1+self.val.getval())
|
||||||
def detach(self, rec):
|
def detach(self, rec):
|
||||||
print 'test1 detach',rec.name()
|
print 'test1 detach',rec.name()
|
||||||
|
@ -8,16 +8,9 @@ insts = {}
|
|||||||
def done(obj):
|
def done(obj):
|
||||||
print obj,'Expires'
|
print obj,'Expires'
|
||||||
|
|
||||||
_tracking = {}
|
|
||||||
def track(obj):
|
|
||||||
W = weakref.ref(obj, done)
|
|
||||||
print 'track',obj,'with',W
|
|
||||||
_tracking[id(obj)] = W
|
|
||||||
|
|
||||||
class Driver(threading.Thread):
|
class Driver(threading.Thread):
|
||||||
def __init__(self, name):
|
def __init__(self, name):
|
||||||
super(Driver,self).__init__()
|
super(Driver,self).__init__()
|
||||||
track(self)
|
|
||||||
self.name = name
|
self.name = name
|
||||||
self._lock = threading.Lock()
|
self._lock = threading.Lock()
|
||||||
self._recs = set()
|
self._recs = set()
|
||||||
@ -59,17 +52,13 @@ def addDrv(name):
|
|||||||
|
|
||||||
class Device(object):
|
class Device(object):
|
||||||
def __init__(self, rec, drv):
|
def __init__(self, rec, drv):
|
||||||
track(self)
|
|
||||||
self.driver, self.record = drv, rec
|
self.driver, self.record = drv, rec
|
||||||
self.driver.addrec(self)
|
self.driver.addrec(self)
|
||||||
self.val = rec.field('VAL')
|
self.val = rec.field('VAL')
|
||||||
def detach(self, rec):
|
def detach(self, rec):
|
||||||
self.driver.delrec(self)
|
self.driver.delrec(self)
|
||||||
def process(self, rec, data):
|
def process(self, rec, data):
|
||||||
if data is None:
|
if data is not None:
|
||||||
print rec,'Someone processed me?'
|
|
||||||
else:
|
|
||||||
print rec,'update to',data
|
|
||||||
self.val.putval(data)
|
self.val.putval(data)
|
||||||
|
|
||||||
def build(rec, args):
|
def build(rec, args):
|
||||||
|
39
testApp/test3.py
Normal file
39
testApp/test3.py
Normal file
@ -0,0 +1,39 @@
|
|||||||
|
|
||||||
|
import numpy as np
|
||||||
|
import scipy as sp
|
||||||
|
from numpy.random import randint, uniform
|
||||||
|
|
||||||
|
class WfSup(object):
|
||||||
|
def __init__(self, rec, args):
|
||||||
|
self.VAL = rec.field('VAL')
|
||||||
|
self.NORD = rec.field('NORD')
|
||||||
|
self.nelm = rec.field('NELM').getval()
|
||||||
|
|
||||||
|
self.arr = self.VAL.getarray()
|
||||||
|
self.x = np.arange(self.nelm)
|
||||||
|
|
||||||
|
self.phase = 0.0
|
||||||
|
|
||||||
|
def detach(self, rec):
|
||||||
|
pass
|
||||||
|
|
||||||
|
def process(self, rec, reason):
|
||||||
|
pha = self.phase*np.pi/180.0
|
||||||
|
self.phase += 10.0
|
||||||
|
if self.phase>=360.0:
|
||||||
|
self.phase == 360.0
|
||||||
|
|
||||||
|
N=randint(1,self.nelm)
|
||||||
|
|
||||||
|
val=self.arr[:N]
|
||||||
|
x=self.x[:N]
|
||||||
|
|
||||||
|
val[:] = pha*x
|
||||||
|
np.sin(val, out=val)
|
||||||
|
val[:]*=uniform(0.5,2.0)
|
||||||
|
val[:]+=2
|
||||||
|
|
||||||
|
self.NORD.putval(N)
|
||||||
|
|
||||||
|
def build(rec, args):
|
||||||
|
return WfSup(rec, args)
|
Reference in New Issue
Block a user