caproto.ioc_examples.random_walk.RandomWalkIOC¶
- class caproto.ioc_examples.random_walk.RandomWalkIOC(prefix: str, *, macros: Dict[str, str] | None = None, parent: PVGroup | None = None, name: str | None = None)[source]¶
This example contains a PV
x
that takes random steps at an update rate controlled by a second PV,dt
.¶ Attribute
Suffix
Docs
Type
Notes
Alarm Group
dt
dt
Delta time [sec]
float
x
x
The random float value
float
Startup
Methods
group_read
(instance)Generic read called for channels without get defined
group_write
(instance, value)Generic write called for channels without put defined
Attributes
default_values
type_map
type_map_read_only
pvdb
attr_pvdb
attr_to_pvname
groups
pvproperty methods
- x.startup(self, instance, async_lib)¶
This is a startup hook which periodically updates the value.
Source code: x.startup
16 @x.startup 17 async def x(self, instance, async_lib): 18 """This is a startup hook which periodically updates the value.""" 19 while True: 20 # Grab the current value from `self.x` and compute the next value: 21 x = self.x.value + 2. * random.random() - 1.0 22 23 # Update the ChannelData instance and notify any subscribers: 24 await instance.write(value=x) 25 26 # Let the async library wait for the next iteration 27 await async_lib.sleep(self.dt.value)