-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathdomemon9000.py
More file actions
81 lines (63 loc) · 2.41 KB
/
domemon9000.py
File metadata and controls
81 lines (63 loc) · 2.41 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
from socket import *
import numpy as np
import matplotlib
matplotlib.use('wxagg')
import matplotlib.pyplot as plt
import time
import win32com.client
import pythoncom
import sys
HOST = 'Hercules'
PORT = 65000
BUFSIZ = 1024
ADDR = (HOST, PORT)
slit_size = 5.
sys.coinit_flags = 0
pythoncom.CoInitialize()
ObjTele = win32com.client.Dispatch("TheSkyXAdaptor.RASCOMTele")
ObjTele.Connect()
while 1:
tcpCliSock = socket(AF_INET, SOCK_STREAM)
tcpCliSock.connect(ADDR)
tcpCliSock.send('POSITION')
POPO = tcpCliSock.recv(BUFSIZ)
position = float(POPO.split('\n')[0])
if position < 0.: position = position + 360.
if position > 360.: position = position % 360.
tcpCliSock.close()
tcpCliSock = socket(AF_INET, SOCK_STREAM)
tcpCliSock.connect(ADDR)
tcpCliSock.send('DOMEBUSY')
DOSO = tcpCliSock.recv(BUFSIZ)
dome_status = int(DOSO.split('\n')[0])
tcpCliSock.close()
ObjTele.GetAzAlt()
scope_az = ObjTele.dAz
theta = np.arange((position-(slit_size/2.))/180.*np.pi,(position+(slit_size/2.))/180.*np.pi,0.01)
r = [1.] * len(theta)
tr = np.arange(0.,1.1,0.1)
tthe = [scope_az/180.*np.pi] * len(tr)
plt.rcParams['toolbar'] = 'None'
fig = plt.figure("Dome Monitor 9000",figsize=(3,3.5))
ax = plt.subplot(111,projection='polar')
if dome_status == 1.:
bars = ax.bar(position/180.*np.pi,1.0,width=slit_size*2.5/180.*np.pi,color="green")
bars = ax.bar(position/180.*np.pi,1.0,width=slit_size/180.*np.pi,color="lightgreen")
else:
bars = ax.bar(position/180.*np.pi,1.0,width=slit_size*2.5/180.*np.pi,color="grey")
bars = ax.bar(position/180.*np.pi,1.0,width=slit_size/180.*np.pi,color="lightgrey")
if (scope_az <= position-(slit_size/2.)) or (scope_az >= position+(slit_size/2.)):
ax.plot(theta,r,linewidth=12,color="red")
ax.plot(tthe,tr,linewidth=3,linestyle=':',color="red")
else:
ax.plot(theta,r,linewidth=12,color="green")
ax.plot(tthe,tr,linewidth=3,linestyle='--',color="green")
ax.set_rmax(1.)
ax.set_rticks([])
ax.set_rlabel_position(-22.5)
ax.grid(True)
ax.set_theta_zero_location("N")
ax.set_theta_direction(-1)
plt.title("Telescope: {:4.2f} Dome: {:4.2f} Active: {:1d}".format(scope_az,position,dome_status),y=-0.2,size=10)
plt.pause(0.5)
ax.clear()