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)