# 连接到server,如果不在本机,需要指定IP(需在同一样网段下) from quark import connect server = connect('QuarkServer', '127.0.0.1')
task = {'metainfo': {'name': 'test:/s21', 'other': {}},
'taskinfo': {'STEP': {'main': ['WRITE', ('freq', 'offset', 'power')],
'step2': ['WRITE', 'trig'],
'step3': ['WAIT', 0.1],
'read': ['READ', 'read'],
'step5': ['WAIT', 0.2]},
'CIRQ': [],
'INIT': [('Trigger.CHAB.TRIG', 0, 'any')],
'RULE': ['{gate}.Measure.Q1.params.frequency = {Q0}.setting.LO-{Q2}.setting.LO +1250'],
'LOOP': {'freq': [('Q0.setting.LO', np.linspace(0, 10, 2), 'Hz'),
('gate.Measure.Q1.index', np.linspace(0, 10, 2), 'Hz')],
'offset': [('M0.setting.TRIGD', np.linspace(0, 10, 2), 'Hz'),
('Q2.setting.LO', np.linspace(0, 10, 2), 'Hz')],
'power': [('Q3.setting.LO', np.linspace(0, 10, 2), 'Hz'),
('Q4.setting.POWER', np.linspace(0, 10, 2), 'Hz')],
'trig': [('Trigger.CHAB.TRIG', 0, 'any')],
'read': ['M0.setting.PNT', 'M1.setting.PNT']
}
},
}
仅以字典作形式化描述!
for f in freq:
for o in offset:
for p in power:
设置 f, o, p(并执行RULE)和编译出来的结果
触发设备
等0.1s
采集数据
等0.2s
每个step的值的第一个元素为操作类型,目前有三种:WRITE、WAIT、READ。WRITE和READ对应仪器的setValue和getValue(注:这两个接口日后会废弃,目前为保持兼容性而存在)。WAIT表示等待,数值表示时间(单位为秒)server.submit(task)
server.fetch(server.getid(), meta=True)
所有任务都根据id(整数)获取,为方便记忆和排序,任务id从0(第一次任务)开始连续累加编号,即使server重启,下次也会继续向前编号。同时,id也是其他数据或信息获取的根据,server.getid()的作用即为获取当前id。示例中fetch的第二个参数含意为获取数据的同时返回任务的坐标轴信息,以用于绘图。