Files
2021-05-12 09:14:17 +02:00

142 lines
3.7 KiB
Python

def scan_pin(segment, puck, sample, force=False):
pin_name = get_sample_name(segment, puck, sample)
print "scan pin", pin_name
#Initial checks
assert_valid_address(segment, puck, sample)
assert_puck_detected(segment, puck)
is_aux = (segment == AUX_SEGMENT)
is_rt = (segment == RT_SEGMENT)
if robot.simulated:
time.sleep(0.5)
return "Present"
robot.assert_no_task()
robot.reset_motion()
robot.wait_ready()
robot.assert_cleared()
#robot.assert_in_known_point()
#Enabling
set_status("Scanning pin: " + str(pin_name))
enable_motion()
if is_aux:
if not robot.is_aux():
robot.move_aux()
robot.get_aux(sample)
if is_rt:
if not robot.is_rt():
robot.move_rt()
robot.get_rt(puck, sample)
else:
set_hexiposi(segment)
if not force:
visual_check_hexiposi(segment)
if not robot.is_dewar():
robot.move_dewar()
robot.get_dewar(segment, puck, sample)
(detected, dm) = move_scanner()
update_samples_info_sample_scan(get_puck_name(segment, puck), sample, detected, dm)
if is_aux:
robot.move_aux()
robot.put_aux( sample)
else:
robot.move_dewar()
robot.put_dewar(segment, puck, sample)
ret = "Empty"
if detected:
if (dm is None) or (len(dm.strip())==0):
ret = "Present"
else:
ret = str(dm)
return ret
def mount_pucks(pucks):
"""mount evry position from the given pucks
pucks is a list of puck specification in the format: [segment][puck]
Example: mount_pucks(['c4', e3', 'e2', 'f1'])
"""
for p in pucks:
seg, puc = list(p)
seg = seg.upper()
puc = int(puc)
print "Mounting all positions from {} {}".format(seg.upper(), puc)
mount_puck_pins(seg, puc)
# mount_puck_pins(seg, puc, [1, 2, 3]) # mount only pins 1, 2, 3 for each puck
def mount_puck_pins(segment, puck, positions=None):
""" Mounts every position from the given segment/puck."""
from time import sleep
results = []
if positions is None:
positions = range(1, 17)
for i in positions:
b = magnet_position.getValue()
mount(segment, puck, i, True, False, True)
a = magnet_position.getValue()
results.append((b, a))
print "{:^8.3f}|{:^8.3f}".format(b, a)
sleep(1.0)
# print results
print "{:^8s}|{:^8s}".format("Before", "After")
for b,a in results:
print "{:^8.3f}|{:^8.3f}".format(b, a)
def scan_puck(segment, puck, force=False):
if segment == AUX_SEGMENT:
raise Exception("Cannot scan auxiliary puck")
ret = []
for i in range(16):
mgok = magnet_position_ok.getValue()
mgpos = magnet_position.getValue()
print "magnet sensor before: {} == {:.3f}".format(mgok, mgpos)
ret.append(scan_pin (segment, puck, i+1, force))
print "magnet sensor after: {} == {:.3f}".format(mgok, mgpos)
return ret
def scan_gripper():
print "scan gripper"
#Initial checks
robot.assert_no_task()
robot.reset_motion()
robot.wait_ready()
robot.assert_cleared()
#robot.assert_in_known_point()
#Enabling
set_status("Scanning gripper")
enable_motion()
(detected, dm) = move_scanner()
robot.move_home()
ret = "Empty"
if detected:
if (dm is None) or (len(dm.strip())==0):
ret = "Present"
else:
ret = str(dm)
return ret