Initial Commit
This commit is contained in:
Executable
+50
@@ -0,0 +1,50 @@
|
||||
###################################################################################################
|
||||
# Demonstrate the use of Monitor Scan: sampling based on device change event
|
||||
###################################################################################################
|
||||
|
||||
|
||||
#Simulating async devices:
|
||||
ai1.setPolling(50)
|
||||
ai2.setPolling(50)
|
||||
|
||||
|
||||
#Execute the scan: 25 samples
|
||||
r1 = mscan(ai1, [ai1], 25)
|
||||
|
||||
#Execute the scan: 50 samples, with a timeout of 2s, including a second device, which cache is sampled
|
||||
r2 = mscan(ai1, [ai1, ai2], 50, 2.0)
|
||||
|
||||
#Execute the scan: sampling for 5s, an undefined number of sample
|
||||
r3 = mscan(ai1, [ai1, ai2], -1, 5.0)
|
||||
|
||||
#If a non-cached sensor access is needed, scan must be started in sync mode, but records may then be lost.
|
||||
#In this example ai1 is cached (the trigger always is), wf1 is not, and ai2 is.
|
||||
r4 = mscan(ai1, [ai1, wf1, ai2.cache], -1, 5.0, async = False)
|
||||
|
||||
|
||||
# Scanning a set of sensors based on a software trigger, using mscan
|
||||
import random
|
||||
|
||||
class Trigger(ReadonlyRegisterBase):
|
||||
def doRead(self):
|
||||
return None
|
||||
|
||||
trigger = Trigger()
|
||||
trigger.initialize()
|
||||
|
||||
def scan():
|
||||
mscan(trigger, [ai1, ai2], 10)
|
||||
|
||||
scan_task = fork(scan)
|
||||
|
||||
time.sleep(0.5)
|
||||
for i in range(10):
|
||||
trigger.update()
|
||||
time.sleep(random.random()/5)
|
||||
|
||||
ret = join(scan_task)
|
||||
|
||||
|
||||
#Restoring the device state
|
||||
ai1.setPolling(0)
|
||||
ai2.setPolling(0)
|
||||
Reference in New Issue
Block a user