1、 连接服务

如果不做画图、数据处理之类的操作,以下所有操作只需要一个server连接
# 连接到server,如果不在本机,需要指定IP(需在同一样网段下)
from quark import connect
server = connect('QuarkServer', '127.0.0.1')
[点我] API说明

2、 实验三步走

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']
                              }
                     },
        }

仅以字典作形式化描述!

metainfo

taskinfo

2. 提任务

server.submit(task)

3. 取数据

server.fetch(server.getid(), meta=True)

所有任务都根据id(整数)获取,为方便记忆和排序,任务id从0(第一次任务)开始连续累加编号,即使server重启,下次也会继续向前编号。同时,id也是其他数据或信息获取的根据,server.getid()的作用即为获取当前id。示例中fetch的第二个参数含意为获取数据的同时返回任务的坐标轴信息,以用于绘图。