update examples
This commit is contained in:
@ -14,3 +14,11 @@ record(longin, "$(P)val:b") {
|
||||
field(DTYP, "Python Device")
|
||||
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):
|
||||
def __init__(self, rec):
|
||||
self.val = rec.field('VAL')
|
||||
print rec,self.val.fieldinfo()
|
||||
print 'VAL',self.val.getval()
|
||||
def process(self, rec, reason):
|
||||
print 'test1 proc',rec.name(),reason
|
||||
self.val.putval(1+self.val.getval())
|
||||
def detach(self, rec):
|
||||
print 'test1 detach',rec.name()
|
||||
|
@ -8,16 +8,9 @@ insts = {}
|
||||
def done(obj):
|
||||
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):
|
||||
def __init__(self, name):
|
||||
super(Driver,self).__init__()
|
||||
track(self)
|
||||
self.name = name
|
||||
self._lock = threading.Lock()
|
||||
self._recs = set()
|
||||
@ -59,17 +52,13 @@ def addDrv(name):
|
||||
|
||||
class Device(object):
|
||||
def __init__(self, rec, drv):
|
||||
track(self)
|
||||
self.driver, self.record = drv, rec
|
||||
self.driver.addrec(self)
|
||||
self.val = rec.field('VAL')
|
||||
def detach(self, rec):
|
||||
self.driver.delrec(self)
|
||||
def process(self, rec, data):
|
||||
if data is None:
|
||||
print rec,'Someone processed me?'
|
||||
else:
|
||||
print rec,'update to',data
|
||||
if data is not None:
|
||||
self.val.putval(data)
|
||||
|
||||
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