#!/usr/bin/env python # *-----------------------------------------------------------------------* # | | # | Copyright (c) 2022 by Paul Scherrer Institute (http://www.psi.ch) | # | Based on Zac great first implementation | # | Author Thierry Zamofing (thierry.zamofing@psi.ch) | # *-----------------------------------------------------------------------* import logging _log=logging.getLogger(__name__) import epics #from app_config import settings #from app_utils import assert_motor_positions class Backlight(object): def __init__(self, prefix: str='SAR-EXPMX:MOT_BLGT'): if prefix is None: self._sim={'pos':'out'} _log.info('simulated mode:{}'.format(self._sim)) return #simulated mode self._mot = epics.Motor(prefix) self._pos = {'in':-29000,'out':0} def is_pos(self,strPos): try: m=self._mot except AttributeError: _log.info('simulated mode:{}'.format(strPos)) return self._sim['pos']==strPos m.refresh() return abs(m.readback - self._pos[strPos]) < 10 def move(self, strPos, wait=False): try: m=self._mot except AttributeError: _log.info('simulated mode:{}'.format(strPos)) self._sim['pos']=strPos return m=self._mot _log.debug("backlight to {}".format(strPos)) target=self._pos[strPos] m.move(target, ignore_limits=True, wait=wait) if __name__ == "__main__": import time,os import argparse logging.basicConfig(level=logging.DEBUG,format='%(levelname)s:%(module)s:%(lineno)d:%(funcName)s:%(message)s ') parser = argparse.ArgumentParser() parser.add_argument('-m', '--mode', help='mode string with characters: "frgbka" for front,red,green,blue,back,all') parser.add_argument("-t", "--test", help="test sequence", action="store_true") args = parser.parse_args() os.environ['EPICS_CA_ADDR_LIST'] = '129.129.244.255 sf-saresc-cagw.psi.ch:5062 sf-saresc-cagw.psi.ch:5066' _log.info('Arguments:{}'.format(args.__dict__)) bl = Backlight() if args.test: bl.move('in') time.sleep(2) bl.move('out') time.sleep(2) bl.move('in') time.sleep(2) bl.move('out') time.sleep(2)