Compare View

switch
from
...
to
 
Commits (2)
@@ -22,7 +22,7 @@ dev.open(True) @@ -22,7 +22,7 @@ dev.open(True)
22 dev.commandstring("camera SET exptime 0.1") 22 dev.commandstring("camera SET exptime 0.1")
23 dev.commandstring("camera DO ACQ START") 23 dev.commandstring("camera DO ACQ START")
24 while True: 24 while True:
25 - timer = dev.commandstring(camera GET timer) 25 + timer = dev.commandstring("camera GET timer")
26 if timer == -1: 26 if timer == -1:
27 break 27 break
28 time.sleep(1) 28 time.sleep(1)
src/guitastro_device_ascomcam/__init__.py
@@ -8,8 +8,61 @@ guitastro_device_ascomcam.device_ascomcam @@ -8,8 +8,61 @@ guitastro_device_ascomcam.device_ascomcam
8 from __future__ import (absolute_import, division, print_function, 8 from __future__ import (absolute_import, division, print_function,
9 unicode_literals) 9 unicode_literals)
10 10
11 -import glob  
12 -import os 11 +__version__ = "20240702"
13 12
14 -from .device_ascomcam import Device_Ascomcam 13 +import os, sys, pathlib
  14 +
  15 +# --- Get the module name
  16 +# __file__ = 'C:\\d\\python\\gestion_packages\\mymodule\\src\\mymodule\\__init__.py'
  17 +modulename = pathlib.Path(__file__).parts[-2]
  18 +
  19 +# --- Special for Sphinx in mymodule/docs
  20 +path = os.path.abspath(os.path.join(__file__, "..", "..", modulename))
  21 +sys.path.append(path) if path not in sys.path else None
15 22
  23 +# --- Switch on True to update the list of imports
  24 +if False:
  25 + import glob, os
  26 + import importlib
  27 + pyfiles = glob.glob(os.path.abspath(os.path.join(__file__, "..", "*.py")))
  28 + files = []
  29 + imps = []
  30 + for pyfile in pyfiles:
  31 + if os.path.basename(pyfile)[0] != "_" and os.path.isfile(pyfile):
  32 + file = os.path.splitext(os.path.basename(pyfile))[0]
  33 + #print(f"{file=}")
  34 + with open(pyfile, "rt") as fid:
  35 + lines = fid.readlines()
  36 + for line in lines:
  37 + # 0123456789
  38 + # class O(
  39 + if len(line) < 8:
  40 + continue
  41 + if line[0:6] == "class ":
  42 + k = line.find("(")
  43 + if k > 6:
  44 + obj = line[6:k].strip()
  45 + imp = f"from .{file} import {obj}"
  46 + imps.append(imp)
  47 + files.append(file)
  48 + #importlib.__import__(modulename, fromlist=files)
  49 + print("="*40)
  50 + for file in files:
  51 + print(f"import {file}")
  52 + print()
  53 + for imp in imps:
  54 + print(f"{imp}")
  55 + print("="*40)
  56 + del pyfiles, pyfile, file, files, os, glob, importlib, fid, lines, line, k, obj, imp, imps
  57 +
  58 +# --- All imports generated by the switch = True
  59 +import component_detector_shutter_ascomcam
  60 +import component_detector_timer_ascomcam
  61 +import component_sensor_detector_ascomcam
  62 +import device_ascomcam
  63 +
  64 +from .component_detector_shutter_ascomcam import ComponentDetectorShutterAscomcam
  65 +from .component_detector_timer_ascomcam import ComponentDetectorTimerAscomcam
  66 +from .component_sensor_detector_ascomcam import ComponentSensorDetectorAscomcamDoAcq
  67 +from .component_sensor_detector_ascomcam import ComponentSensorDetectorAscomcam
  68 +from .device_ascomcam import Device_Ascomcam
src/guitastro_device_ascomcam/component_detector_shutter_ascomcam.py
@@ -2,20 +2,10 @@ @@ -2,20 +2,10 @@
2 import os 2 import os
3 import sys 3 import sys
4 4
5 -try:  
6 - # guitastro is installed with setup.py  
7 - from guitastro import ComponentDetectorShutter, ComponentException  
8 -except:  
9 - # guitastro is installed with only requirements.in  
10 - # guitastro_camera_* folders must be copied at the same root folder than guitastro  
11 - pwd = os.getcwd()  
12 - short_paths = ['../../../guitastro/src']  
13 - for short_path in short_paths:  
14 - path = os.path.abspath(os.path.join(pwd, short_path))  
15 - if path not in sys.path:  
16 - sys.path.insert(0, path)  
17 - from guitastro.component import ComponentException  
18 - from guitastro.component_detector_shutter import ComponentDetectorShutter 5 +# --- import guitastro
  6 +path = os.path.abspath(os.path.join(__file__, "..", "..", "..", "..", "guitastro", "src"))
  7 +sys.path.append(path) if path not in sys.path else None
  8 +from guitastro import *
19 9
20 # ##################################################################### 10 # #####################################################################
21 # ##################################################################### 11 # #####################################################################
src/guitastro_device_ascomcam/component_detector_timer_ascomcam.py
@@ -2,20 +2,10 @@ import time @@ -2,20 +2,10 @@ import time
2 import os 2 import os
3 import sys 3 import sys
4 4
5 -try:  
6 - # guitastro is installed with setup.py  
7 - from guitastro import ComponentDetectorTimer, ComponentException  
8 -except:  
9 - # guitastro is installed with only requirements.in  
10 - # guitastro_camera_* folders must be copied at the same root folder than guitastro  
11 - pwd = os.getcwd()  
12 - short_paths = ['../../../guitastro/src']  
13 - for short_path in short_paths:  
14 - path = os.path.abspath(os.path.join(pwd, short_path))  
15 - if path not in sys.path:  
16 - sys.path.insert(0, path)  
17 - from guitastro.component import ComponentException  
18 - from guitastro.component_detector_timer import ComponentDetectorTimer 5 +# --- import guitastro
  6 +path = os.path.abspath(os.path.join(__file__, "..", "..", "..", "..", "guitastro", "src"))
  7 +sys.path.append(path) if path not in sys.path else None
  8 +from guitastro import *
19 9
20 # ##################################################################### 10 # #####################################################################
21 # ##################################################################### 11 # #####################################################################
src/guitastro_device_ascomcam/component_sensor_detector_ascomcam.py
@@ -5,23 +5,11 @@ from threading import Thread, Event @@ -5,23 +5,11 @@ from threading import Thread, Event
5 import traceback 5 import traceback
6 import time 6 import time
7 import datetime 7 import datetime
8 -#import shlex  
9 8
10 -try:  
11 - # guitastro is installed with setup.py  
12 - #from guitastro import ComponentSensorDetector, ComponentException  
13 - from guitastro import ComponentSensorDetector, ComponentSensorDetectorException  
14 -except:  
15 - # guitastro is installed with only requirements.in  
16 - # guitastro_objcom_* folders must be copied at the same root folder than guitastro  
17 - pwd = os.getcwd()  
18 - short_paths = ['../../../guitastro/src']  
19 - for short_path in short_paths:  
20 - path = os.path.abspath(os.path.join(pwd, short_path))  
21 - if path not in sys.path:  
22 - sys.path.insert(0, path)  
23 - #from guitastro.component import ComponentException  
24 - from guitastro.component_sensor_detector import ComponentSensorDetector, ComponentSensorDetectorException 9 +# --- import guitastro
  10 +path = os.path.abspath(os.path.join(__file__, "..", "..", "..", "..", "guitastro", "src"))
  11 +sys.path.append(path) if path not in sys.path else None
  12 +from guitastro import *
25 13
26 isascom = True 14 isascom = True
27 try: 15 try:
@@ -51,12 +39,14 @@ class ComponentSensorDetectorAscomcamDoAcq(Thread): @@ -51,12 +39,14 @@ class ComponentSensorDetectorAscomcamDoAcq(Thread):
51 self._binning = args[2] 39 self._binning = args[2]
52 self._queue = self._upself._queue 40 self._queue = self._upself._queue
53 self._stopevent = Event() 41 self._stopevent = Event()
  42 + self._timer = -1
54 43
55 def run(self): 44 def run(self):
56 """Code to execute during the Thread life 45 """Code to execute during the Thread life
57 """ 46 """
58 operation = "thread.acq.run" 47 operation = "thread.acq.run"
59 upself = self._upself 48 upself = self._upself
  49 + self._timer = 0
60 try: 50 try:
61 # --- stop current acq 51 # --- stop current acq
62 # --- start current acq 52 # --- start current acq
@@ -69,6 +59,7 @@ class ComponentSensorDetectorAscomcamDoAcq(Thread): @@ -69,6 +59,7 @@ class ComponentSensorDetectorAscomcamDoAcq(Thread):
69 while True: 59 while True:
70 # --- Timeout 60 # --- Timeout
71 dt = time.time() - t0 61 dt = time.time() - t0
  62 + self._timer = int(dt)
72 if dt >= timeout: 63 if dt >= timeout:
73 upself._is_timeout = True 64 upself._is_timeout = True
74 break 65 break
@@ -95,6 +86,8 @@ class ComponentSensorDetectorAscomcamDoAcq(Thread): @@ -95,6 +86,8 @@ class ComponentSensorDetectorAscomcamDoAcq(Thread):
95 traceback.print_exc(file=sys.stdout) 86 traceback.print_exc(file=sys.stdout)
96 # --- 87 # ---
97 # The thread termined properly 88 # The thread termined properly
  89 + self._timer = -1
  90 + upself.database.query("status", upself.SENSOR_STATE_IDLE)
98 91
99 def stop(self): 92 def stop(self):
100 # --- stop any motion 93 # --- stop any motion
@@ -103,6 +96,9 @@ class ComponentSensorDetectorAscomcamDoAcq(Thread): @@ -103,6 +96,9 @@ class ComponentSensorDetectorAscomcamDoAcq(Thread):
103 upself._stop_acq(operation) 96 upself._stop_acq(operation)
104 self._stopevent.set() 97 self._stopevent.set()
105 98
  99 + def timer(self):
  100 + return self._timer
  101 +
106 def __del__(self): 102 def __del__(self):
107 self.stop() 103 self.stop()
108 104
src/guitastro_device_ascomcam/device_ascomcam.py
1 # -*- coding: utf-8 -*- 1 # -*- coding: utf-8 -*-
  2 +# source d'inspiration
  3 +# https://stackoverflow.com/questions/46163001/python-script-for-controlling-ascom-ccd-camera
  4 +# https://rk.edu.pl/en/ascom-end-user-application-developers/
  5 +# https://mountwizzard4.readthedocs.io/en/latest/overview.html
  6 +
  7 +# https://ascom-standards.org/Help/Developer/html/T_ASCOM_deviceAccess_Camera.htm
  8 +
2 import os 9 import os
3 import sys 10 import sys
4 #import ast 11 #import ast
5 import time 12 import time
6 13
7 -try:  
8 - from .component_sensor_detector_ascomcam import ComponentSensorDetectorAscomcam  
9 -except:  
10 - from component_sensor_detector_ascomcam import ComponentSensorDetectorAscomcam  
11 -  
12 -"""  
13 -try:  
14 - from .component_detector_shutter_ascomcam import ComponentDetectorShutterAscomcam  
15 -except:  
16 - from component_detector_shutter_ascomcam import ComponentDetectorShutterAscomcam 14 +# --- import guitastro
  15 +path = os.path.abspath(os.path.join(__file__, "..", "..", "..", "..", "guitastro", "src"))
  16 +sys.path.append(path) if path not in sys.path else None
  17 +from guitastro import *
17 18
18 -try:  
19 - from .component_detector_timer_ascomcam import ComponentDetectorTimerAscomcam  
20 -except:  
21 - from component_detector_timer_ascomcam import ComponentDetectorTimerAscomcam  
22 -""" 19 +# --- import guitastro_device_ascomcam
  20 +path = os.path.abspath(os.path.join(__file__, "..", ".."))
  21 +sys.path.append(path) if path not in sys.path else None
  22 +from guitastro_device_ascomcam import *
23 23
24 isascom = True 24 isascom = True
25 try: 25 try:
@@ -27,22 +27,6 @@ try: @@ -27,22 +27,6 @@ try:
27 except: 27 except:
28 isascom = False 28 isascom = False
29 29
30 -try:  
31 - # guitastro is installed with setup.py  
32 - # from guitastro import Ephemeris, Device  
33 - from guitastro import Device  
34 -except:  
35 - # guitastro is installed with only requirements.in  
36 - # guitastro_objcom_* folders must be copied at the same root folder than guitastro  
37 - pwd = os.getcwd()  
38 - short_paths = ['../../../guitastro/src', '..']  
39 - for short_path in short_paths:  
40 - path = os.path.abspath(os.path.join(pwd, short_path))  
41 - if path not in sys.path:  
42 - sys.path.insert(0, path)  
43 - from guitastro.device import Device  
44 - #from guitastro.ephemeris import Ephemeris  
45 -  
46 # ##################################################################### 30 # #####################################################################
47 # ##################################################################### 31 # #####################################################################
48 # ##################################################################### 32 # #####################################################################