'**** SCRIPT PER RICERCA SN ****

'**** COORDINATE OSSERVATORIO *****
lat=44.471111111 'in gradi decimali N
longitudine=12.0544444 'in gradi decimali E


'***** IMPOSTAZIONI CCD & TELESCOPIO *****
telescope.speed(3) 'velocit telescopio
bin= 1'binning camera
altezmin = 35 'altezza minima oggetto
decmax=72 'massima declinazione consentita

'********* END IMPOSTAZIONI ***************

telescope.send(":AP#")

'*** input tempi di posa e lista oggetti***
input "Secondi di posa ",tp
'input "noggetto inizio lista ",ni

'*** timer ***
input "Start data UT: 'AAAA MM GG' ",startdata$
input "Start time UT: 'hh mm ss'",startime$
input "End data UT: 'AAAA MM GG' ",endata$
input "End time UT: 'hh mm ss'",endtime$
'***** end zona input *****

'verifica numero oggetti in lista
n= telescope.list.count
nl=n-ni
print str$(nl)+" object in list:"

'***** timer *****
print "Sistemy standby, session start at:"
print startdata$
print "UT "+startime$

'controllo data inizio sessione
dc$=date$
while dc$<>startdata$ then
dc$=date$
endwhile

'controllo ora inizio sessione
tc$=time$
while tc$<startime$ then 
tc$=time$
endwhile
cls
print "START SESSION "+date$+" UT "+time$ 
print""
print str$(n)+" Object in list"

'***** end timer *****

'inizio ciclo for-next puntamento
for a = ni to n
snh$="logfile_sn_"+startdata$+".txt"
Output.Save(snh$)
print""
print ucase$(telescope.list.name$(a))+"(object n"+str$(a)+")"



'**** data di ripresa ********
data$=date$()
'**** end data di ripresa ****

'***** current JD and UT  *********
camera.start(1)
jd=image.getkey("JD")
image.close
tmgdec=jd-int(jd)
tmgdec=(jd-int(jd))*24-12
'***** end current JD and UT  *****

'discriminante di puntamento dec.
if telescope.list.dec(a)>decmax then
print "slew abort: "+telescope.list.name$(a)+" not allowed dec.value"
r=n-a
if r<=0 then 
print""
print "END SESSION!"
stop
endif
print""
print "Object remaning ",r
next a
endif

'discriminante  di puntamento ar.
for i = 1 to 2
'***** current JD and UT  *********
camera.start(1)
jd=image.getkey("JD")
image.close
tmgdec=(jd-int(jd))*24+12
'***** end current JD and UT  *****

'***** CALCOLO TSG *****
'***** CALCOLO TSG ORE 0 UT *****
if jd-int(jd)>=0.5 then
jd0=int(jd)+0.5
endif
if jd-int(jd)<0.5 then
jd0=int(jd)-0.5
endif

T=(jd0-2451545.0)/36525
o1=((8640184.812866*T+0.093104*(T*T)-0.0000062*(t^3)))
if o1<0 then
od=(o1/86400)*(-1)
if od-int(od)<>0 then
a=1
else
a=0
endif
ox=o1+(int(od)+a)*86400
endif
if o1>=0 then
ox=o1
endif
oxf=(ox/60)/60
dtsg0=int((6.697222222+oxf)/24)
tsg0=6.697222222+oxf-(24*dtsg0)
tsg=tsg0
'***** CALCOLO TSG ORE 0 UT FINE *****
frjd=(jd-int(jd))
if frjd<=0.5 then
frjd1=43200+(frjd*86400)
endif
if frjd>0.5 then
frjd1=(frjd*86400)-43200
endif

seconds=frjd1*1.00273790935
hour=(seconds/60)/60
tsg1=hour+tsg0
divtsg1=int(tsg1/24)
tsg=tsg1-24*divtsg1
'***** CALCOLO TSG FINE *****
'***** CALCOLO TSL *****
longg=longitudine/15
tsll=tsg+longg
if tsll>=0 and tsll <24 then
tsl=tsll
endif
if tsll>24 then
dtsg=int(tsll/24)
tsl=tsll-(24*dtsg)
endif
if tsll<0 then
dtsg=(-1*(int(tsll/24)))+1
tsl=tsll+(24*dtsg)
tsl=tsll+24
endif
'la variabile che esprime il TSL si chiama:"tsl"
'***** CALCOLO TSL FINE *****
'***** CALCOLO TSG E TSL FINE! *****
' ***** CALCOLO AZIMUT E ALTEZZA *****
hh=telescope.list.ra(a)-tsl
if hh<0 then
adm=-1*((hh/24)+1)
h=adm*24
else
h=hh
endif
arg=h*15
deg=telescope.list.dec(a)
sina=sin(deg*pi()/180)*sin(lat*pi()/180)+cos(deg*pi()/180)*cos(lat*pi()/180)*cos(arg*pi()/180)
aa=asin(sina)
aaa=aa*180/pi()
cosa=(sin(deg*pi()/180)-sin(lat*pi()/180)*sina)/(cos(lat*pi()/180)*cos(aaa*pi()/180))
app=acos(cosa)
ap=app*180/pi()
sinar=sin(arg*pi()/180)
if sinar<0 then
azimut=ap
endif
if sinar>=0 then
azimut=360-ap
endif
altezza=aaa
print "Sideral time: ", tsl
print "Azimut: "+telescope.list.name$(a)+" "+str$(azimut)
print "Altit.: "+telescope.list.name$(a)+"  "+str$(altezza)


if altezza<altezmin then
print "slew aborted: "+telescope.list.name$(a)+" object too low on horizon"
r=n-a
if r<=0 then 
print""
print "END SESSION!"
stop
endif
print""
print "Object remaning ",r
next a
endif
'puntamento
telescope.goto(telescope.list.ra(a),telescope.list.dec(a))
print "Slew on "+telescope.list.name$(a)+": UT "+time$()
telescope.wait

'inizio ciclo for-next ripresa

print "Frame of "+telescope.list.name$(a)+":  "+str$(tp)+"sec. UT "+time$
'wheel.goto("CLEAR")
Camera.Binning(bin)
Camera.Start(tp)
Camera.Wait
red$=data$+"_"+telescope.list.name$(a)+".fit"
Image.Rename(red$)
image.save(red$)
'red1$=telescope.list.name$(a)+".fit"
'Image.Rename(red1$)
'image.save(red1$)
'Image.close


r=n-a
print""
print "Object remaning ",r
'**** ricalcolo orario *****
ttpd=(tp)/86400
tmgdec=tmgdec+ttpd

'***** end session by time *****
dc$=date$
tc$=time$
if dc$=endata$ then
if tc$>endtime$ then 
print "Endtime!"
break
endif
endif
'*******************************


next a
print ""
print "END SESSION "+date$+" UT "+time$ 
telescope.send(":AL#")