Example #1
0
def put_complete_test():
    motor_record = config.motor_recs[0]
    mrec = EpicsMotor(motor_record)

    logger.info('--> PV Positioner, using put completion and a DONE pv')
    # PV positioner, put completion, done pv
    pos = PVPositioner(mrec.field_pv('VAL'),
                       readback=mrec.field_pv('RBV'),
                       done=mrec.field_pv('MOVN'), done_val=0,
                       put_complete=True,
                       )

    high_lim = pos._setpoint.high_limit
    try:
        pos.check_value(high_lim + 1)
    except ValueError as ex:
        logger.info('Check value for single failed, as expected (%s)' % ex)
    else:
        print('high lim is %f' % high_lim)
        raise ValueError('check_value should have failed')

    stat = pos.move(1, wait=False)
    logger.info('--> post-move request, moving=%s' % pos.moving)

    while not stat.done:
        logger.info('--> moving... %s error=%s' % (stat, stat.error))
        time.sleep(0.1)

    pos.move(-1, wait=True)
    logger.info('--> synchronous move request, moving=%s' % pos.moving)

    logger.info('--> PV Positioner, using put completion and no DONE pv')
    # PV positioner, put completion, no done pv
    pos = PVPositioner(mrec.field_pv('VAL'),
                       readback=mrec.field_pv('RBV'),
                       put_complete=True,
                       )

    stat = pos.move(2, wait=False)
    logger.info('--> post-move request, moving=%s' % pos.moving)

    while not stat.done:
        logger.info('--> moving... %s' % stat)
        time.sleep(0.1)

    pos.move(0, wait=True)
    logger.info('--> synchronous move request, moving=%s' % pos.moving)