examples/arguments_demo: demonstrate parents

This commit is contained in:
Sebastien Bourdeauducq 2015-08-25 00:07:37 +08:00
parent 1ad8e65e42
commit b7120aa0ac
1 changed files with 39 additions and 3 deletions

View File

@ -1,15 +1,49 @@
from artiq import * from artiq import *
class SubComponent1(HasEnvironment):
def build(self):
self.attr_argument("sc1_scan", Scannable(default=NoScan(325)),
"Flux capacitor")
self.attr_argument("sc1_enum", EnumerationValue(["1", "2", "3"]),
"Flux capacitor")
def do(self):
print("SC1:")
for i in self.sc1_scan:
print(i)
print(self.sc1_enum)
class SubComponent2(HasEnvironment):
def build(self):
self.attr_argument("sc2_boolean", BooleanValue(False),
"Transporter")
self.attr_argument("sc2_scan", Scannable(default=NoScan(325)),
"Transporter")
self.attr_argument("sc2_enum", EnumerationValue(["3", "4", "5"]),
"Transporter")
def do(self):
print("SC2:")
print(self.sc2_boolean)
for i in self.sc2_scan:
print(i)
print(self.sc2_enum)
class ArgumentsDemo(EnvExperiment): class ArgumentsDemo(EnvExperiment):
def build(self): def build(self):
self.attr_argument("free_value", FreeValue(None)) self.attr_argument("free_value", FreeValue(None))
self.attr_argument("boolean", BooleanValue(True))
self.attr_argument("enum", EnumerationValue(
["foo", "bar", "quux"], "foo"))
self.attr_argument("number", NumberValue(42, unit="s", step=0.1)) self.attr_argument("number", NumberValue(42, unit="s", step=0.1))
self.attr_argument("string", StringValue("Hello World")) self.attr_argument("string", StringValue("Hello World"))
self.attr_argument("scan", Scannable(global_max=400, default=NoScan(325))) self.attr_argument("scan", Scannable(global_max=400, default=NoScan(325)))
self.attr_argument("boolean", BooleanValue(True), "Group")
self.attr_argument("enum", EnumerationValue(
["foo", "bar", "quux"], "foo"), "Group")
self.sc1 = SubComponent1(parent=self)
self.sc2 = SubComponent2(parent=self)
def run(self): def run(self):
print(self.free_value) print(self.free_value)
@ -19,3 +53,5 @@ class ArgumentsDemo(EnvExperiment):
print(self.string) print(self.string)
for i in self.scan: for i in self.scan:
print(i) print(i)
self.sc1.do()
self.sc2.do()