README.txt
8.39 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
********************************************************************************************
1) TEST
Pour lancer les TESTS:
cd test/
./test_client_gemini.py
Ca doit se terminer par quelque chose comme:
Ran 1 test in 0.005s
OK
Là, il faut arrêter avec CTRL-C (car je ne sais pas encore comment arrêter le serveur simulateur autrement !)
********************************************************************************************
2) RUN
Pour lancer le client sur ton telescope Gemini:
./client_gemini_run.py
(Windows: python3 client_gemini_run.py)
(NB: un log "client.log" est créé et alimenté au fur et à mesure)
(Pour avoir plus de détail, mettre la variable DEBUG à True dans le fichier client_gemini_run.py)
(press ENTER to quit)
REQUEST TO SERVER [ex: ':GD#' (Get Dec), ':GR#' (Get RA)']: GD
src.client.client_udp_or_tcp - INFO - Sent: b'01000000:GD#\n'
src.client.client_udp_or_tcp - INFO - RECEIVED (ALL BYTES): b'01000000+87.380139#\x00'
src.client.client_udp_or_tcp - INFO - RECEIVED (useful data): +87.380139
REQUEST TO SERVER [ex: ':GD#' (Get Dec), ':GR#' (Get RA)']: GR
src.client.client_udp_or_tcp - INFO - Sent: b'01000000:GR#\n'
src.client.client_udp_or_tcp - INFO - RECEIVED (ALL BYTES): b'0100000020.865902#\x00'
src.client.client_udp_or_tcp - INFO - RECEIVED (useful data): 20.865902
REQUEST TO SERVER [ex: ':GD#' (Get Dec), ':GR#' (Get RA)']: GV
src.client.client_udp_or_tcp - INFO - Sent: b'01000000:GV#\n'
src.client.client_udp_or_tcp - INFO - RECEIVED (ALL BYTES): b'01000000510#\x00'
src.client.client_udp_or_tcp - INFO - RECEIVED (useful data): 510
REQUEST TO SERVER [ex: ':GD#' (Get Dec), ':GR#' (Get RA)']: Gv
src.client.client_udp_or_tcp - INFO - Sent: b'01000000:Gv#\n'
src.client.client_udp_or_tcp - INFO - RECEIVED (ALL BYTES): b'01000000T\x00'
src.client.client_udp_or_tcp - INFO - RECEIVED (useful data): T
********************************************************************************************
3) DEV
Pour lancer le client sur le "simulateur" de telescope (localhost, port 11110):
- dans un terminal, lancer le simulateur: ./server_run.py
- dans un autre terminal, lancer le client: ./client_gemini_run.py local
********************************************************************************************
4) DONE
- doctests
- GOTO
- finalize do_init()
- set date&time, set lat&long
- README file enriched
- help => liste cdes possibles
- (X) set DATE & TIME (p109)
- Ce que fait AK avec TCL ou C: sprintf(ligne,":SC%02d/%02d/%02d#:SL%02d:%02d:%02.0f#:SG+00#",m,d,y-2000,h,min,s);
1) :SG+00#
=> TU
2) SC%02d/%02d/%02d#:
mois, jour, YY
3) SL%02d:%02d:%02.0f#:
hh:mn:ss (heure locale)
m,d,y-2000,h,min,s
Faire les 3 commandes ensemble en 1 seule ligne, chacune séparée par #, le tout terminé par « 00 »
- generic commands available from client console
- generic commands implemented
- procedure initialize()
- ACK (cde 6)
- 3 types of commands
- \x00 at end
- classe SocketClientAbstract de base
********************************************************************************************
5) WORK CURRENTLY IN PROGRESS...
- move do_GOTO dans abstract
- main updated
- tests updated
- comment functions args
- clean code
********************************************************************************************
6) TODO LIST
- Tele MEADE ETX (altaz) : cf doc pdf (from page 1)
- peut être en 3 modes : land, altaz, polar (equatorial)
- :AP# => passer en mode polar
- :AA# => passer en mode AltAz
- cette config doit être fait dans do_init()
- doc page 1 : x=implémenté, p=partial, - = pas implémenté
- POSITION (p103):
- (100) MOVE() (p104-105)
=> en altaz ou radec
=> préférer "haut, bas, gauche, droite" plutôt que North, South, west, east (surtout sur altaz ça n'a aucun sens)
=> sur equatorial, h,b = DEC et g,d = RA
- set_speed()
- start(direction) avec direction = h,b,g,d => move infini
- stop()
- pulse(direction, nbsec) = start() puis sleep(nbsec) puis stop()
- éventuellement start_diagonal qui ferait start(up) et start(right) en alternance (pas prioritaire)
- MOVE(direction, rate, duration):
- move dans une direction (N,S,E,O) à l'infini
- ':Q#' pour arrêter (p 108)
- duration: infinie si pas donnée
- rate (p108): 4 vitesses différentes (prendre la plus lente par défaut), entre 0 et 1:
- [0-0.25] : RC => Rate Center. Subsequent Move commands will move at Centering Speed.
- [0.25-0.50] : RG => Rate Guide. Subsequent Move commands will move at Guiding Speed.
- [0.50-0.75] : RM => Rate Move. Subsequent Move commands will move at Centering Speed.
- [0.75-1.0] : RS => Rate Slew. Subsequent Move commands will move at Slewing Speed.
- (100) GOTO:
- 1) goto_setmode(radec | hadec | altaz)
- 2) goto()
- Attention, gemini ne comprend que radec, les tarot ne comprennent que hadec !!! :
=> goto_setmode(radec) ne fait rien sur un gemini, mais convertit sur un tarot
- (100) vitesse de pointage (slew speed) : n'existe pas sur tous les tele
- drift = tracking speed : une fois que tele a pointé, comment il part...
- toujours en hadec
- tracking_speed = 0 => tele est fixe
- t.tracking_speed(ha ou ra, dec) => ha est en nb degrés/sec
=> t.tracking_speed(0,0)
=> t.tracking_speed("diurnal" ou "sideral",0) // sideral c'est mieux
- jour solaire : 86400s/jour
- jour sideral (diurnal) = durée d'une journée pour une étoile = 86164s/jour (moins que jour solaire, à cause du fait que en 24h, la Terre a avancé sur son orbite circulaire)
- nb degrés/sec = 360/86400 pour jour solaire, et 360/86164 pour jour sideral
- (200) timeout : 1 pour send, 1 pour receive
- (200) celme.angles => infos() à généraliser
- (200) type erreurs
- 1000 : communication (network, cable débranché) = channel
- 2000 : syntax
- 3000 : out of limit (pointage hors limite, ex: sur le sol)
- 4000 : controller
- 5000 : file (disk...)
- (100) do_native()
- (100) generic functions return tuple with error code :
res = get_ra()
=> res.res is the resulte
=> res.error is the error object : err.error_code, err.generic_msg, err.native_msg
- (200) PLC abstract client
- (100) input commands format :
- get ra
- set ra "2h3m27s" => converted by celme.Angle(ra).deg()
- (200) superclass ClientChannel for ClientSocketAbstract : for UDP, TCP, serial, usb...
- (100) _cmds_getset, _cmds_do = list of functions
- remplacer utf-8 par unicode ou iso...
- cdes 05 (p100):
- cde 05 => return long list of parameters (= GROS GET)
- ENQ = 05
- Table d'attributs pour chaque telescope (config)
- _connect() ou connect() ?
- Implémenter les commandes NATIVES (non LX-200) :
- < ou >, termine par ':' + checksum + #
********************************************************************************************
7) INFORMATIONS
GMT = TU décalé de 12h, mais maintenant c'est pareil
TU = UTC civil, voir aussi UT1, UT2
COMMANDES LX-200:
- SA et SZ pour envoyer coord en alt-az
RA-DEC is converted into "pas codeurs"
1 pas codeur (mvmt interne du tele) = environ 1 sec arc sur le ciel
(en gros, RA = petit axe du tele, DEC = grand axe du tele)
Parking = vers le nord (cf photo) = en position CWD (Counter Weight Down) (contre-poids en bas ?)
Par défaut, le tele fonctionne en RADEC J2000
http://82.64.28.71:8083/L5V1serial.html
Ce qui marche:
- REQUEST TO SERVER [ex: ':GD#' (Get Dec), ':GR#' (Get RA)']: 01000000:GD#
Received (all data): 01000000+90:00:00#
- REQUEST TO SERVER [ex: ':GD#' (Get Dec), ':GR#' (Get RA)']: 01000000:GR#
Received (all data): 0100000015:01:48#
- REQUEST TO SERVER [ex: ':GD#' (Get Dec), ':GR#' (Get RA)']: 01000000:GR#
Received (all data): 0100000016:04:17#
- Get Software Level l(one digit) and Version vv(two digits)
REQUEST TO SERVER [ex: ':GD#' (Get Dec), ':GR#' (Get RA)']: 01000000:GV#
Received (all data): 01000000510#
- REQUEST TO SERVER [ex: ':GD#' (Get Dec), ':GR#' (Get RA)']: 01000000:GG#
Received (all data): 01000000+00#
- Get Maximum Velocity of both axes (N = No mvmt)
REQUEST TO SERVER [ex: ':GD#' (Get Dec), ':GR#' (Get RA)']: 01000000:Gv#
Received (all data): 01000000N