update examples

This commit is contained in:
Michael Davidsaver
2013-03-30 19:51:29 -04:00
parent e071fceb45
commit 84a7876ed0
4 changed files with 50 additions and 13 deletions

View File

@ -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")
}

View File

@ -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()

View File

@ -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
View 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)