appels_wrappers.py 3.17 KB
# ===========================================================
# 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")