3258 |
kakl |
1 |
;Josef Szylar ver 1.6 - 4. 8. 2013 |
|
|
2 |
;PODMÍNKA JEN 80 ZNAKŮ |
|
|
3 |
;PŘÍKAZY JEN 255 ZNAKŮ |
|
|
4 |
|
|
|
5 |
;Zmeny: |
|
|
6 |
;- Opravena chyba s prepisovanim vypisu zacatku |
|
|
7 |
;- cas necitlivosti upraven na 2 |
|
|
8 |
;- cas ovaleni upraven na 4 |
|
|
9 |
;- Doplneno generovani pruklepu screenshotu pri bolidu do adresare s bolidy |
|
|
10 |
;- Graficka zmena vypisu |
|
|
11 |
;- Pridan zaznam o intenzite sumu do no_met |
|
|
12 |
|
|
|
13 |
|
|
|
14 |
;Časovače |
|
|
15 |
;timer0 - časovač maximální mezery mezi 2 meteory K_max_time_btw_met |
|
|
16 |
;timer3 - časovač pro odpočet screenshotu bez meteoru K_max_time_to_scr |
|
|
17 |
;timer4 - časovač pro odečet screenshotu s meteorem po odvalení několika málo sekund aby nebyl meteor moc nahoře |
|
|
18 |
|
|
|
19 |
;Proměnné: |
|
|
20 |
;n=0 noise background šum pozadí |
|
|
21 |
;n_1=0 šum v okamžiku detekce meteoru |
|
|
22 |
;f=0 frequency of maximum amplitude frekvence na které se nachází maximum |
|
|
23 |
;aver_amp=0 average amplitude +- 100 Hz průměrná aplituda v rozsahu +- 100Hz od maxima |
|
|
24 |
;aver_amp_1=-999 je average amplitude aktualizovaná v průběhu měření meteoru |
|
|
25 |
;aver_amp_max=-999 je maximální hodnota z hodnot v průběhu měření meteoru |
|
|
26 |
;mag=0 magnitude |
|
|
27 |
;hour_count=0 count of meteors in hour |
|
|
28 |
;dur_count=0 maximální délka meteoru (count po dobu existence meteoru) |
|
|
29 |
;dur_count_1=0 pomocný k uchování hodnoty dur_count |
|
|
30 |
;t0=0 průběžný čas a datum (aktualizace každých 50ms) v textové formě "YYYYMMDDhh" |
|
|
31 |
;t0_1 uložený čas pro jméno datového souboru k odeslaní ftp po uplynulé hodině |
|
|
32 |
;t1=0 čas start aktuální meteor v UNIX timestamp formě |
|
|
33 |
;t1_1=0 uložený čas pro zápis do RMOB_dur souboru value:event |
|
|
34 |
;t1_2=0 uložený čas pro odesílání "no meteor" screenshotu |
|
|
35 |
;t2=0 průběžný čas hour (hodnota průběžné hodiny) v textové formě "hh" |
|
|
36 |
;t3=0 průběžný čas hodiny minuty a vteřiny v textové formě "mmss" |
|
|
37 |
;t4=0 čas meteoru s nejdelší dobou aktivity (násobek K_int_cond * dur_count) |
|
|
38 |
;id_met=0 identifikátor meteoru do screenshotu |
|
|
39 |
|
|
|
40 |
;Konstanty: |
|
|
41 |
;K_station_name="JOSY_A" station name (devices code - 7 characters maximum, only "A-Z" and "_" - get your unique station code on http://home.robozor.cz) |
|
|
42 |
|
|
|
43 |
;K_path_scr vložit lokální adresář pro screenshoty |
|
|
44 |
;K_path_audio vložit lokální adresář pro audio soubory |
|
|
45 |
;K_path_RMOB vložit lokální adresář textové soubory RMOB |
|
|
46 |
;K_path_SDR vložit lokální adresář textové soubory RMOB |
|
|
47 |
;K_max_time_btw_met=2 minimalni doba mezi 2 meteory v sekundachjsou (nižší se počítá jako 1 meteor) |
|
|
48 |
;K_max_time_to_scr=100 maximální doba bez meteoru, která pokud vyprší, udělá screenshot (max doba za kterou odroluje waterfall) |
|
|
49 |
;K_init_cond=50 interval pro nastavení vyhodnocení scriptu 50ms Evaluate SpectrumLab condition interval (50ms) |
|
|
50 |
;K_time_to_start_up_waterf=4 vteřiny od okraje screenshot Kolik sekund se má počkat do screenshotu po detekci metreoru (jak daleko od okraje) |
|
|
51 |
;K=7 - citlivost detekce meteoru |
|
|
52 |
;K_min_dur_count_bolid=50 detekce bolidu pro audio (2,5 vteřiny) |
|
|
53 |
|
|
|
54 |
;Události |
|
|
55 |
;A_init (inicializace) |
|
|
56 |
;A_measurement (kdykoliv po 50 ms) |
|
|
57 |
;A_still_detect (událost trvání meteoru nebo bolidu) - průběžně |
|
|
58 |
;A_start_detect (událost detekce začátku meteoru nebo bolidu) |
|
|
59 |
;A_start_detect_bolid (událost 2,5 vteřiny od detekce meteoru) |
|
|
60 |
;A_end_detect (událost detekce konce meteoru nebo bolidu) |
|
|
61 |
;A_end_detect_end (konec cyklu události detekce konce meteoru nebo bolidu) |
|
|
62 |
;A_write_waterf (událost záznamu popisu detekce do waterfallu) |
|
|
63 |
;A_update_SDR_data_file (událost generování souboru SDR screenshot při záznamu meteoru) |
|
|
64 |
;A_update_RMOB_Dur_file (událost generování souborů RBOB) |
|
|
65 |
;A_met_screenshot (událost generování screenshotu waterfallu pokud je zaznamenán meteor) |
|
|
66 |
;A_no_met_screenshot (událost generování screenshotu waterfallu pokud není dlouho zaznamenán meteor) |
|
|
67 |
;A_once_hour_20s_before (událost 1x za hodinu před ukončením hodiny 20 vteřin) |
|
|
68 |
;A_once_hour |
|
|
69 |
;A_once_hour_10s_before (událost 1x za hodinu před ukončením hodiny 10 vteřin) |
|
|
70 |
;A_once_hour_30s_after (událost 1x za hodinu po ukončení hodiny 30 vteřin) |
|
|
71 |
|
|
|
72 |
|
|
|
73 |
;-----------------A_init - Inicializace proměnných a konstant-------------------- |
|
|
74 |
if( initialising ) then A_init=1:A_still_detect=0:n=0:n_1=0:f=0:f_1=0:aver_amp=0:a=0:mag=0:mag_max=0:hour_count=0:dur_count=0:dur_count_1=0:aver_amp_1=-999:aver_amp_max=-999:t0=0:t0_1=0:t1=0:t1_1=0:t1_2=0:t2=0:t3=0:t4=0:bolide=0 |
|
|
75 |
if( A_init = 1 ) then A_init=2:id_met="no":id_met2="no":K_station_name="SVAK1_":K_path_scr="c:\\meteors\\capture\\":K_path_audio="c:\\meteors\\bolides\\":K_path_RMOB="C:\\meteors\\RMOB\\":K_path_SDR="C:\\meteors\\data\\" |
|
|
76 |
if( A_init = 2 ) then A_init=3:K_max_time_btw_met=2:K_max_time_to_scr=100:K_init_cond=50:K_time_to_start_up_waterf=4:K=7:K_min_dur_count_bolid=50 |
|
|
77 |
if( A_init = 3 ) then A_init=4:A_measurement=0:A_start_detect=0:A_end_detect=0:A_end_detect_end=0:A_write_waterf=0:A_update_SDR_data_file=0:A_update_RMOB_Dur_file=0:A_met_screenshot=0 |
|
|
78 |
if( A_init = 4 ) then A_init=5:A_no_met_screenshot=0:A_once_hour_20s_before=0:A_once_hour=0:A_once_hour_10s_before=0:A_once_hour_30s_after=0:A_once_hour_40s_after=0:timer3.restart(K_max_time_to_scr) |
|
|
79 |
if( A_init = 5 ) then A_init=0 |
|
|
80 |
|
|
|
81 |
;----------------A_measurement - (po 50 ms)------------------------------------- |
|
|
82 |
;n=noise(9800,10200) aktualizace a výpočet hodnoty šumu (záleží na nastavení FFT) |
|
|
83 |
;f=peak_f(10300,10900) max intenzita signálu v daném intervalu frekvencí |
|
|
84 |
;aver_amp=avrg(f-100,f+100) vrací prům. intenzitu signálu 100 Hz kolem maxima |
|
|
85 |
;t0=str("YYYYMMDDhh",now) uloží aktuální datum |
|
|
86 |
;t1=now uloží UNIX time stamp na microsekundy (tečka oddělovač) |
|
|
87 |
;t2=str("hh",now) uloží aktuální hodinu |
|
|
88 |
;t3=str("mmss",now) uloží aktuální minutu a vteřinu |
|
|
89 |
;------------------------------------------------------------------------------- |
|
|
90 |
if( never ) then REM --- A_measurement - (each 50 ms) ---------------------------- |
|
|
91 |
if( always ) then A_measurement=1:n=noise(9800,10200):f=peak_f(10300,10900):aver_amp=avrg(f-100,f+100):a=(n+K) |
|
|
92 |
if( A_measurement=1 ) then A_measurement=0:t0=str("YYYYMMDDhh",now):t1=round(now*1000):t2=str("hh",now):t3=str("mmss",now) |
|
|
93 |
|
|
|
94 |
;-----------------A_still_detect (an event of meteor or bolide continue)----------- |
|
|
95 |
if( aver_amp>a ) then A_still_detect=A_still_detect+1:timer0.restart(K_max_time_btw_met):timer3.restart(K_max_time_to_scr):dur_count=dur_count+1:aver_amp_1=aver_amp |
|
|
96 |
|
|
|
97 |
;-----------------A_aver_amp (udalost aktualizace maximalni hodnoty aver_amp)--- |
|
|
98 |
if( aver_amp_1>aver_amp_max ) then aver_amp_max=aver_amp_1 |
|
|
99 |
|
|
|
100 |
;-----------------A_start_detect (událost začátku meteoru)---------------------- |
|
|
101 |
if( never ) then REM --- A_start_detect (an event of begin of meteor) -------------- |
|
|
102 |
if( A_still_detect=1 ) then A_still_detect=2:A_start_detect=1:t1_1=t1:id_met=(K_station_name+str(t1_1)):sp.print(" ^ t+"+str("ss",time)) |
|
|
103 |
if( A_start_detect=1 ) then A_start_detect=2:n_1=n:f_1=f |
|
|
104 |
if( A_start_detect=2 ) then A_start_detect=0: |
|
|
105 |
|
|
|
106 |
;------------A_end_detect (událost detekce konce meteoru nebo bolidu)----------- |
|
|
107 |
if( never ) then REM --- A_end_detect (end of meteor) --- |
|
|
108 |
if( timer0.expired(1) ) then A_end_detect=1:id_met2=id_met:hour_count=hour_count+1:timer4.restart(K_time_to_start_up_waterf):dur_count1=dur_count*K_init_cond: |
|
|
109 |
if( A_end_detect=1 ) then A_end_detect=2:sp.print(" "+id_met2+" HCount"+str(hour_count)+" nb"+str(round(n_1))+" f"+str(f_1)+" dur"+str(dur_count1)+" mag"+str(round(n_1-aver_amp_max+10))) |
|
|
110 |
if( A_end_detect=2 ) then A_end_detect=3:A_update_SDR_data_file=1 |
|
|
111 |
if( A_end_detect=3 ) then A_end_detect=0 |
|
|
112 |
|
|
|
113 |
;-----------------A_update_SDR_data_file---------------------------------------- |
|
|
114 |
;SDR datový soubor záznamu radiometeorů (projekt astrozor.cz) |
|
|
115 |
;Název souboru:JOSY_A20130123.dat |
|
|
116 |
if( never ) then REM --- write data to file (project astrozor.cz) --- |
|
|
117 |
if( A_update_SDR_data_file=1 ) then A_update_SDR_data_file=2:fopen1(K_path_SDR+K_station_name+t0+".dat",a) |
|
|
118 |
if( A_update_SDR_data_file=2 ) then A_update_SDR_data_file=3:fp1(id_met2+" ; "+str(round(n_1))+" ; "+str(f_1)+" ; "+str(aver_amp_max)+" ; "+str(round(n_1-aver_amp_max+10))+" ; "+str(dur_count_1)+" ; "+str(K_init_cond)+" ; "+str(K_min_dur_count_bolid)) |
|
|
119 |
if( A_update_SDR_data_file=3 ) then A_update_SDR_data_file=4:fclose1 |
|
|
120 |
if( A_update_SDR_data_file=4 ) then A_update_SDR_data_file=5:A_end_detect_end=1 |
|
|
121 |
if( A_update_SDR_data_file=5 ) then A_update_SDR_data_file=0 |
|
|
122 |
|
|
|
123 |
;--------------A_end_detect_end------------------------------------------------- |
|
|
124 |
;zametení |
|
|
125 |
if( never ) then REM --- Cleaning ---------------------------------------------- |
|
|
126 |
if( A_end_detect_end=1 ) then A_end_detect_end=2:dur_count=0:dur_count_1=0:aver_amp_1=-999:aver_amp_max=-999:rec.trigger=0:A_still_detect=0 |
|
|
127 |
if( A_end_detect_end=2 ) then A_end_detect_end=3:REM exec(K_path_audio+"ftp_up.bat "+id_met2+".wav") |
|
|
128 |
if( A_end_detect_end=3 ) then A_end_detect_end=0 |
|
|
129 |
|
|
|
130 |
;-----------------A_start_detect_bolid (událost start bolidu)------------------- |
|
|
131 |
if( never ) then REM --- A_start_detect_bolid (begin of fireball) -------------- |
|
|
132 |
if( dur_count=K_min_dur_count_bolid ) then rec.filename=K_path_audio+id_met+".wav":rec.trigger=1:bolide=1 |
|
|
133 |
|
|
|
134 |
;---A_met_screenshot (událost generování screenshotu waterfallu pokud je zaznamenán meteor)--- |
|
|
135 |
if( never ) then REM --- A_met_screenshot (capture a screenshot with meteor) --- |
|
|
136 |
if( timer4.expired(1) ) then A_met_screenshot=1:capture (K_path_scr+id_met2+".jpg") |
|
|
137 |
if((A_met_screenshot=1)&&(bolide=1)) then capture (K_path_audio+id_met2+".jpg") |
|
|
138 |
if( A_met_screenshot=1 ) then A_met_screenshot=2:REM exec(K_path_scr+"ftp_up.bat "+id_met2+".jpg") |
|
|
139 |
if( A_met_screenshot=2 ) then A_met_screenshot=0:bolide=0 |
|
|
140 |
|
|
|
141 |
;---A_no_met_screenshot (událost generování screenshotu waterfallu pokud není dlouho zaznamenán meteor)--- |
|
|
142 |
if( never ) then REM --- A_no_met_screenshot (capture a screenshot without meteor) --- |
|
|
143 |
if( timer3.expired ) then A_no_met_screenshot=1:t1_2=t1:capture (K_path_scr+K_station_name+str(t1_2)+"no_met.jpg") |
|
|
144 |
if( A_no_met_screenshot=1 ) then A_no_met_screenshot=2:fopen1(K_path_SDR+K_station_name+t0+".dat",a) |
|
|
145 |
if( A_no_met_screenshot=2 ) then A_no_met_screenshot=3:fp1(K_station_name+str(t1_2)+"no_met ; "+str(round(n))+" ; ; ; ; ; ; ") |
|
|
146 |
if( A_no_met_screenshot=3 ) then A_no_met_screenshot=4:fclose1 |
|
|
147 |
if( A_no_met_screenshot=4 ) then A_no_met_screenshot=5:t1_2=0 |
|
|
148 |
if( A_no_met_screenshot=5 ) then A_no_met_screenshot=0:timer3.restart(K_max_time_to_scr) |
|
|
149 |
|
|
|
150 |
;-A_once_hour_20s_before (událost 1x za hodinu před ukončením hodiny 20 vteřin)- |
|
|
151 |
;RMOB - soubor pro měření hodinových četností radiometeorů (projekt www.rmob.org) |
|
|
152 |
;Název souboru:RMOB-201301.dat, kde RMOB je zkratka pro Radio Meteor Observing Bulletin, 2013 je rok a 01 je měsíc |
|
|
153 |
if( never ) then REM --- A_once_hour_20s_before (an event 1x per hour - 20 seconds) --- |
|
|
154 |
if( val(t3,"####")=5940 ) then A_once_hour_20s_before=A_once_hour_20s_before+1 |
|
|
155 |
if( A_once_hour_20s_before=1 ) then A_once_hour=1:fopen4(K_path_RMOB+"RMOB-"+str("YYYYMM",now)+".dat",a):fp4(t0,",",t2,",",hour_count):fclose4:t0_1=t0 |
|
|
156 |
if( A_once_hour=1 ) then A_once_hour=2:sp.print("Last hour=",hour_count):hour_count=0 |
|
|
157 |
if( A_once_hour=2 ) then A_once_hour=0 |
|
|
158 |
|
|
|
159 |
;-A_once_hour_10s_before (událost 1x za hodinu před ukončením hodiny 10 vteřin)- |
|
|
160 |
if( never ) then REM --- A_once_hour_10s_before (an event 1x per hour - 10 seconds) --- |
|
|
161 |
if( val(t3,"####")=5950 ) then A_once_hour_10s_before=1:A_once_hour_20s_before=0: |
|
|
162 |
if( A_once_hour_10s_before=1 ) then A_once_hour_10s_before=0 |
|
|
163 |
|
|
|
164 |
;-A_once_hour_30s_after (událost 1x za hodinu po ukončení hodiny 30 vteřin)- |
|
|
165 |
if( never ) then REM --- A_once_hour_30s_after (an event 1x per hour + 30 seconds) --- |
|
|
166 |
if( val(t3,"####")=0030 ) then A_once_hour_30s_after=A_once_hour_30s_after+1 |
|
|
167 |
if( A_once_hour_30s_after=1 ) then A_once_hour=1:REM exec(K_path_SDR+"ftp_up.bat "+K_station_name+t0_1+".dat") |
|
|
168 |
if( A_once_hour=1 ) then A_once_hour=0 |
|
|
169 |
|
|
|
170 |
;-A_once_hour_40s_after (událost 1x za hodinu po ukončení hodiny 40 vteřin)- |
|
|
171 |
if( never ) then REM --- A_once_hour_40s_after (an event 1x per hour + 40 seconds) --- |
|
|
172 |
if( val(t3,"####")=0040 ) then A_once_hour_40s_after=1:A_once_hour_30s_after=0 |
|
|
173 |
if( A_once_hour_40s_after=1 ) then A_once_hour_40s_after=2:t0_1=0 |
|
|
174 |
if( A_once_hour_40s_after=2 ) then A_once_hour_40s_after=0 |
|
|
175 |
|