# =========================================================== # Commandes pour piloter manuellement un telescope avec pyros # ----------------------------------------------------------- # Idealement les commandes suivantes sont effectuées dans un agent. # # Liens entre les devices et les agents wrappers # 'TCHMount', 'MountPointing' ---> wrapper_deltatau_tch # 'TCHCamera', 'DetectorSensor' ---> wrapper_andor_tch # 'TCHCamera', 'DetectorShutter' ---> wrapper_andor_tch # 'TCHCamera', 'DetectorTimer' ---> wrapper_meinberg_tch # 'TCHCamera', 'FilterSelector' ---> wrapper_deltatau_tch # 'TCHCamera', 'DetectorFocus' ---> wrapper_deltatau_tch # # 'DetectorFocus' ==> # =========================================================== # Lors d'une instanciation de la classe Config : # - On lit les key,value des sections 'instanciation' du fichier de config >>> config = Config("config.xml") # On peut trouver les instanciations qu'il faut effectuer >>> config.get_instanciations() ['mount1'='TCHMount', 'channel1'='TCHCamera'] # On veut connaitre tous les devices de cette mounture >>> config.get_devices('TCHMount') ['MountPointing'] # On peut recevoir une liste de dictionnaires de tous les parametres d'un device de cette mounture >>> config.get_device_params('TCHMount','MountPointing') [ {'section':"MountPointing", 'key':"wrapper", 'value':"wrapper_deltatau_tch.py"}, {'section':"MountPointing", 'key':"home", 'value':"GPS 1.477083 E 43.81667 150" 'type':"str" 'unit':""} ] # On veut connaitre tous les devices d'un channel >>> config.get_devices('TCHCamera') ['DetectorSensor', 'DetectorShutter', 'DetectorTimer', 'FilterSelector', 'DetectorFocus'] # On peut recevoir une liste de dictionnaires de tous les parametres d'un device de ce channel >>> config.get_device('TCHCamera','DetectorSensor') [ {'section':"DetectorSensor", 'key':"wrapper", 'value':"wrapper_andor_tch.py", 'type'="str"}, {'section':"DetectorSensor", 'key':"sensor_type", 'value':"CCD", 'type':"str"} ] >>> pyros = Pyros(config) >>> w1 = pyros.launch_agent("wrapper_deltatau_tch") >>> w2 = pyros.launch_agent("wrapper_andor_tch") >>> w3 = pyros.launch_agent("wrapper_meinberg_tch") >>> pyros.kill_agent(w3) % === envoie une commande vers un agent pyros.command_agent(w1,"current status") pyros.command_agent(w1,"current status") !!!!!!!!! ajouter I am alive database pour les agents !!!!!!!!!!!! mount1 = pyros.mount1 channel1 = pyros.channel1 mount1.MountPointing("current status") mount1.MountPointing("do init") channel1.FilterSelector("current error") channel1.FilterSelector("set symbol B") channel1.FilterSelector("do goto") while True: action = channel1.FilterSelector("current action") if (symbol == "B"): break channel1.FocusTuning("set position 10.0") channel1.FocusTuning("do goto") while True: position = channel1.FocusTuning("current position") if ( abs(position-10)): break mount1.MountPointing("set slew speed [20, 20]") mount1.MountPointing("set drift speed ['diurnal', 0]") mount1.MountPointing("set coord ephem_radec [date:'now', ra='3h38m', dec='-0d3m', equinox='J2000']") mount1.MountPointing("do goto") channel1.DetectorSensor("set binning [1, 1]") channel1.DetectorSensor("set exptime 10.0")