FIXME ** Questa pagina non è ancora completamente tradotta. Chi può potrebbe aiutarne il completamento. ** \\ // (Rimuovere questo paragrafo a lavoro completato) // ====== Flushock ====== ===== Idea ===== Continua la collaborazione con l'associazione [[http://www.sastrieste.it/|Società Adriatica di Speleologia]]. Čeprav prvi projekt [[wiki:progetti/co2shock|CO2SHOCK]] ima še precej potenciala v razvoju, kot objaviti vse meritve na spletu, se je pojavila nova želja. Eden izmed zanimivih podatkov, ki bi se ga dalo izmeriti, je pretok reke Timava, ki teče v najnižjem delu jame Labadnìce (it. Abisso di Trebiciano). Meritev toka reke je precej kompliciran, ker je odvisen od hitrosti pretoka vode, ki pa ni enakomeren v strugi. Ponavadi je tok v sredini struge hitrejši, na dnu in na robovih pa počasnejši. Dodaten problem v tem primeru je, da globina reke se zelo hitro spreminja za precej metrov. Torej kot prvo zadevo bi morsli izvesti celo serijo meritev v raznih točkah struge. Na podlagi teh podatkov je potem možno izračunati približno količino vode, ki se pretaka v reki. V končni fazi, ko bo na razpolago cela serija meritev z različnimi globinami reke, bo verjetno možno izračunaki pretok na osnovi le majhnega števila meritev. ===== Strojna oprema ===== Sergio Dambrosi od speleološkega društva je imel na razpolago zastarel merilec hitrosti toka, ki ga je priredil z modernejšo elektroniko. Merilec meri impuluze in vsakih 10 sekund pošlje število impulzov preko WiFi antene na WiFi sprejemnik, ki podatek pretvori v običajen RS-232 paket. Od tu dalje se lahko podatek enostavno prebere z računalnikom direktno povezan preko serijskih vrat ali pa preko cenovnega vmesnika, ki pretvori RS-232 v USB signal za računalnike, ki nimajo več na razpolago serijskih vrat. Ko se WiFi sprejemnik prižge pošlje računalniku niz, ki vsebuje podatke sprejemnika (sigla modela ipd.). Nato vsakih 10 sekund pošlje niz s številom seštetih impulzov. ''>000\n'' Sprejemnik preko serijskih vrat ne sprejema nobenega ukaza, tako dačunalnik prebere samo podatke. ===== Programska oprema ===== Cilj programa, ki smo ga hoteli razviti, je prebrati število impulzov in si označiti v kateri uri je bila izvedena meritev. Serijo meritev je nato treba shraniti v datodeko v format CSV. V Mittelab-u najraje delamo z odprto programsko opremo. Pri speleološkem društvu imajo precej različnih računalnikov z različnimi operacijskimi sistemi, kot Windows (več različic) in Linux. Da bi bilo čim lažje uporabiti program na različnih operacijskih sistemih, smo odločili, da bo program napisan v JAVA jeziku. ==== Knjižnica ==== === Serijaka vrata === Dostop do serijskih vrat z Jave je nemogoč. V sami strukturi Jave ni nobenih API za dostop do serijskih vrat, ker je to močno odvisno od operacijskega sistema. V Unix operacijskih sistemih je dostop do serijskih vrat relativno enostaven z branjem sistemskih datotek, kot npr. /dev/ttyS0. To pa ne reši problema nastavitve vrat (hitrost, pariteta, itd.). Pri Windowsih pa branje COM vrat je bolj zapleteno z uporabo čiste Jave. Zaradi teh problematik je bila razvita knjižnica ''jssc'' java-simple-serial-connector. Knjižnica je dosegljiva na [[https://github.com/scream3r/java-simple-serial-connector|githabu]]. Ta knjižnica ni čista Java knjižnica, saj ima v sebi del kode napisane v C++, ki je namenjena vsakemu operacijskemu sistemu. S to knjižnico postane dostop do serijskih vrat s strani JAVA kode precej enostaven. === MVC === Model-view-control je eden izmed modernih paradigmov programiranja. [[https://spring.io/|Spring]] je že dolgo let ena najpomembnejših framework-ov za razvijanje programov v Javi. Za ta program je bil uporabljen [[https://projects.spring.io/spring-boot/|Spring Boot]]. === Unit Testing === V začetku razvoja je bil namen razviti vse potrebne razrede za testiranje kode. Za ta namen so bile vključene v program sledeče knjižnice: [[http://junit.org/|JUnit]], [[http://site.mockito.org/|mockito]] in [[http://hamcrest.org/|Hamcrest]]. V samem začetku programiranja je bilo napisanih nekaj testnih razredov, kmalu pa je postalo jasno, da tak pristop ne bi imel zadostnih rezultatov. Da bi se lahko učinkovito testiralo bistveno kodo bi bilo potreba uporabiti še [[https://github.com/powermock/powermock|PowerMock]]. Iz tehničnega vidika ne bi bil problem, bi pa zahteval nekaj več časa za celoten razvoj. Če bo potreba dodati kako funkcionalnost ali razviti novo verzijo tega programa bo spet vzeta v poštev ta pomanjkljivost in bi bilo treba razviti testno kodo tako za obstoječo kot za novo kodo. Trenutno je samo omenjenih nekaj testov. === Dolpoteg === Koda programa je na razpolago v našem [[https://git.mittelab.org/proj/Flushock|GIT-u]]. Koda je na razpolago pod licenco [[https://www.gnu.org/licenses/gpl-3.0.en.html|GPL3]]. V primeru, da bi radi kaj popravili, prikrojili ali dodali funkcionalnosti, vljudno prosimo, da to javite na info@mittelab.org . Veselili bi se sodelovanja.