Optisk dataoverførsel til en microcontroller - Danmarks Tekniske ...
Optisk dataoverførsel til en microcontroller - Danmarks Tekniske ...
Optisk dataoverførsel til en microcontroller - Danmarks Tekniske ...
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