def test(): def callback(sub_type=None, timestamp=None, value=None, **kwargs): logger.info('[callback] [%s] (type=%s) value=%s' % (timestamp, sub_type, value)) def done_moving(**kwargs): logger.info('Done moving %s' % (kwargs, )) loggers = ('ophyd.controls.signal', 'ophyd.controls.positioner', 'ophyd.session', ) config.setup_loggers(loggers) logger = config.logger motor_record = config.motor_recs[0] m1 = EpicsMotor(motor_record) # m2 = EpicsMotor('MLL:bad_record') m1.subscribe(callback, event_type=m1.SUB_DONE) m1.subscribe(callback, event_type=m1.SUB_READBACK) # print(m1.user_readback.read()) # print(m1.read()) logger.info('---- test #1 ----') logger.info('--> move to 1') m1.move(1) logger.info('--> move to 0') m1.move(0) logger.info('---- test #2 ----') logger.info('--> move to 1') m1.move(1, wait=False) time.sleep(0.2) logger.info('--> stop') m1.stop() logger.info('--> sleep') time.sleep(1) logger.info('--> move to 0') m1.move(0, wait=False, moved_cb=done_moving) time.sleep(2) logger.debug('limits are: {}'.format(m1.limits)) low_lim, high_lim = m1.low_limit, m1.high_limit try: m1.move(high_lim + 1) except LimitError as ex: logger.debug('Failed move, as expected (%s)' % ex) else: raise ValueError('Move should have failed') try: m1.move(low_lim - 1) # LimitError is a ValueError, so either can be caught except ValueError as ex: logger.debug('Failed move, as expected (%s)' % ex) else: raise ValueError('Move should have failed') try: m1.check_value(low_lim - 1) except ValueError as ex: logger.debug('Failed check_value, as expected (%s)' % ex) else: raise ValueError('check_value should have failed') logger.info('--> move to 0') stat = m1.move(2, wait=False) while not stat.done: logger.info('--> moving... %s error=%s' % (stat, stat.error)) time.sleep(0.1) logger.debug(m1.get(as_string=True)) logger.debug(m1.setpoint_ts) logger.debug(m1.timestamp) logger.debug(m1.pvname) logger.debug(m1.setpoint_pvname) fmt = '%%.%df' % m1.precision logger.debug('precision formatting: %s '% fmt) string_pos = fmt % m1.position logger.debug('final position: %s' % string_pos)