27.09.2013 Views

Optisk dataoverførsel til en microcontroller - Danmarks Tekniske ...

Optisk dataoverførsel til en microcontroller - Danmarks Tekniske ...

Optisk dataoverførsel til en microcontroller - Danmarks Tekniske ...

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

4.3 Implem<strong>en</strong>tering<br />

Herunder beskrives programmets overordnede struktur, samt mindre detaljer for specielle<br />

program-metoder. Selvforklar<strong>en</strong>de kode beskrives ikke i det følg<strong>en</strong>de, m<strong>en</strong> der h<strong>en</strong>vises <strong>til</strong> d<strong>en</strong><br />

samlede kildekode bagerst i rapport<strong>en</strong> eller på vedlagte CD, hvor kildekod<strong>en</strong> for test-<br />

applikation<strong>en</strong> er forsøgt beskrevet så tydeligt som muligt. Ligeledes er der gjort meget ud af<br />

brug<strong>en</strong> af sig<strong>en</strong>ede variabler og konstanter for at gøre kod<strong>en</strong> letlæselig.<br />

Først g<strong>en</strong>nemgås g<strong>en</strong>erering<strong>en</strong> af blinkesignaler for datapanelt og derefter opsætning<strong>en</strong> af<br />

applett<strong>en</strong>s grafiske brugergrænseflade.<br />

4.3.1 Filer<br />

Applett<strong>en</strong>s brugergrænseflade er implem<strong>en</strong>teret i TestApplication.java, og DataPanel.java kan<br />

blinke med skærm<strong>en</strong>. Det hele vises på <strong>en</strong> statisk hjemmeside med index.html, og<br />

template.css placerer applett<strong>en</strong> det ønskede sted.<br />

Fil Beskrivelse<br />

TestApplication.java Applett<strong>en</strong> der indeholder selve brugergrænseflad<strong>en</strong> og d<strong>en</strong>s funktionalitet.<br />

DataPanel.java Det blink<strong>en</strong>de område på skærm<strong>en</strong>.<br />

index.html Hjemmesid<strong>en</strong> som viser Java-applett<strong>en</strong>.<br />

favicon.ico Ikon med Prevas' logo vises ved browser<strong>en</strong>s URL og som bogmærke.<br />

template.css Et stylesheet som håndterer placering<strong>en</strong> af applett<strong>en</strong> på hjemmesid<strong>en</strong>.<br />

4.3.2 Data-panel<br />

For bedst muligt at styre signalets høje og lave periode er det nødv<strong>en</strong>digt hele tid<strong>en</strong> at tjekke,<br />

hvor længe tråd<strong>en</strong> har v<strong>en</strong>tet. Sættes systemet <strong>til</strong> blot at v<strong>en</strong>te i <strong>en</strong> bestemt periode, løber<br />

tråd<strong>en</strong> let over tid<strong>en</strong>, og signalet bliver meget upræcist. Metod<strong>en</strong> herunder minimere dette<br />

problem betragteligt.<br />

private void dynamicDelay(int time) {<br />

long bitPeriod = System.curr<strong>en</strong>tTimeMillis();<br />

while((System.curr<strong>en</strong>tTimeMillis()-bitPeriod) < time) {<br />

try {<br />

Thread.sleep(1);<br />

} catch (InterruptedException e) {<br />

e.printStackTrace();<br />

}<br />

}<br />

}<br />

Tabel 2: Period<strong>en</strong> mellem de <strong>en</strong>kelte blink håndteres af dynamicDelay, der sætter tråd<strong>en</strong> <strong>til</strong> at v<strong>en</strong>te.<br />

Der forekommer dog alligevel mindre forsinkelser, hvilket kan have stor betydning for<br />

stabilitet<strong>en</strong> af datamodtagels<strong>en</strong> s<strong>en</strong>ereh<strong>en</strong>, og kalibrering<strong>en</strong> af systemet bliver ligeledes berørt<br />

af dette fænom<strong>en</strong>.<br />

Panelet blinker i debugmode – ellers står tråd<strong>en</strong> blot og v<strong>en</strong>ter. Hvis ikke d<strong>en</strong>ne v<strong>en</strong>tetid<br />

Test-applikation 23

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!