vi er her !!!

02120

DifferentielGPS
home

Data modtagelse

Vores program kan modtage data fra to typer "enheder": Serielle enheder (RS232 enheder) og fra det internetbaserede GPSNet. Programmet kan kun modtage data, der er i RTCM 2.1 formatet. Da der ikke er forskel på det signal vi får fra RS232 enhederne og GPSNet, har vi lavet den abstrakte klasse InputDevice.java, som indeholder en læsning løkke samt abstrakt erklæring af en række metoder. Således kan modtageren (Reciver.java) håndtere alle enheder som en instans af InputDevice og vi behøver kun at skelne mellem dem, når deres indstillinger skal sættes.
Opsamlingen af data udføres i Reciver.java.

Reciver.java

Denne klasse er opsamler og holder al data. I constructoren modtages indstillingerne for de serielle enheder og GPSNet enheder der skal modtages for. Ud fra indstillingerne dannes henholdsvist GPSNet og SerielDevice klasserne. Disse indsættes i et array, hvor de betragtes som InputDevice. Det vil sige, at man ikke efter programmet starter skelner mellem GPSNet enheder og serielle enheder.
Modtagelsen startes med start metoden og stoppes igen med stop metoden. start laver en tråd, som modtagelsen kører i. Tråden kører en løkke hvor alle enheder polles for nye beskeder. Alle tilgængelige beskeder læses og sendes videre til Serverklassen. Efter at alle enheder er blevet pollet bliver tråden sat til at "sove" (vente) i 20 millisekunder. Dette gøres, da den uendelige løkke ellers tager al tilgængelig processorkraft.

InputDevice.java

Dette er en abstrakt klasse, som er brugt til at bygge de to modtagelsesenheder op over. Der er en række abstrakt definerede metoder: start og stop metoder. stopped, som returnerer sandt, hvis datamodtagelsen fra enheden er stoppet. ready, som angiver hvor mange beskeder der er klar og readMessage, som læser Ún hel besked, hvis der er nogen klar. Der er implementeret en fælles modtagelsesmetode readLoop. Den modtager en InputStream som argument, som den læser fra. Metoden består af en løkke, som kan stoppes med start og stop metoden.
Til læsning er der to buffere. Den ene er en CRWBuffer indeholder de 6 bytes, som skal bruges til at lave et ord. De modtagne bytes bliver læst ind i denne buffer. Når der er modtaget 6 bytes læses de ind i den anden buffer, som er en WordBuffer. Denne sørger for at fjerne bytene fra CRWBufferen, så dette behøver løkken ikke at tage sig af.


home