From 985226e9cd8230f456cfa0a2b24044e1ed43d8b0 Mon Sep 17 00:00:00 2001 From: Ezequiel Panepucci Date: Tue, 9 May 2023 12:33:19 +0200 Subject: [PATCH] improve assertInPosition - sometimes this is called while the lid is still moving --- script/devices/Hexiposi.py | 10 +++++++--- script/hexiposi_tester.py | 13 +++++++++++++ 2 files changed, 20 insertions(+), 3 deletions(-) create mode 100644 script/hexiposi_tester.py diff --git a/script/devices/Hexiposi.py b/script/devices/Hexiposi.py index 7003fbc..96a1e16 100644 --- a/script/devices/Hexiposi.py +++ b/script/devices/Hexiposi.py @@ -117,14 +117,18 @@ class Hexiposi(DiscretePositionerBase): #Retrying after end of move -> once in a while move raises a not in position exception. def assertInPosition(self, pos): - retries = 3 + poll_interval = 2.0 + max_turn_time = 8.0 # s + retries = int(max_turn_time / poll_interval) for i in range(retries): + #st = self.get_status() + #print "asserting hexiposi in position " + pos + " --- moving:" + str(st["moving"]) + " --- state:" + str(self.getState()) try: super(Hexiposi, self).assertInPosition(pos) return except: - if i <(retries-1): - time.sleep(0.5) + if i < retries - 1: + time.sleep(poll_interval) else: raise diff --git a/script/hexiposi_tester.py b/script/hexiposi_tester.py new file mode 100644 index 0000000..019efaf --- /dev/null +++ b/script/hexiposi_tester.py @@ -0,0 +1,13 @@ +import random +import time +def hexiposi_tester(num_moves = 10, wait = 3.0): + release_safety() + for n in range(num_moves): + pos = random.choice("ABCDEF") + print str(n) + " of " + str(num_moves) + ") moving to " + pos + hexiposi.move(pos) + #print " sleep " + str(wait) + " s" + time.sleep(wait) + + print " done " + \ No newline at end of file