From: W. Trevor King Date: Thu, 15 Mar 2012 11:51:55 +0000 (-0400) Subject: Fix soft jump handling for unknown `last_output`. X-Git-Tag: 0.7~23 X-Git-Url: http://git.tremily.us/?a=commitdiff_plain;h=3e0d22c9b07c55f2d2e6f73a94c752e24ca0e10a;p=pypiezo.git Fix soft jump handling for unknown `last_output`. Also return after a successful soft jump. The previous implementation duplicated the final step. --- diff --git a/pypiezo/base.py b/pypiezo/base.py index 5fecd64..3e5a079 100644 --- a/pypiezo/base.py +++ b/pypiezo/base.py @@ -524,11 +524,20 @@ class Piezo (object): "Move the output named `axis_name` to `position`." _LOG.debug('jump %s to %s in %d steps' % (axis_name, position, steps)) if steps > 1: - orig_pos = self.last_output[axis_name] - for pos in _numpy.linspace(orig_pos, position, steps+1)[1:]: - self.jump(axis_name=axis_name, position=pos) - if sleep: - _sleep(sleep) + try: + orig_pos = self.last_output[axis_name] + except KeyError, e: + _LOG.warn( + ("cannot make a soft jump to {} because we don't have a " + 'last-output position for {}').format( + position, axis_name)) + steps = 1 + else: + for pos in _numpy.linspace(orig_pos, position, steps+1)[1:]: + self.jump(axis_name=axis_name, position=pos) + if sleep: + _sleep(sleep) + return position = int(position) channel = self.channel_by_name(name=axis_name) channel.data_write(position)