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

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

Applett<strong>en</strong> er inddelt således, at nogle overordnede<br />

paneler indeholder andre paneler. Dette hjælper med <strong>til</strong><br />

at organisere knapper i blokke og blokke i sektioner,<br />

så det er forholdsvist let at rykke rund på grupper af<br />

knapper – eller slå dem <strong>til</strong> og fra som man ønsker.<br />

Applett<strong>en</strong> har <strong>en</strong> Container, hvor i panelerne er placeret<br />

(se illustration 17). Ind<strong>en</strong> i container<strong>en</strong> er placeret to<br />

paneler – én <strong>til</strong> at blinke med data (outputPanel) og én <strong>til</strong><br />

at tage imod input (controlPanel). D<strong>en</strong> første udgøres af<br />

et objekt af DataPanel-klass<strong>en</strong>, og d<strong>en</strong> and<strong>en</strong> indeholder<br />

paneler <strong>til</strong> at styre blinke-signalerne. S<strong>en</strong>ere vil der blive<br />

oprettet et userPanel, hvor bruger<strong>en</strong> kan kommunikere<br />

data <strong>til</strong> wavecardet via et tekstfelt og nogle knapper;<br />

m<strong>en</strong> ind<strong>til</strong> videre er der blot et debugPanel i controlPanel.<br />

debugPanel indeholder yderligere paneler med Swing-kompon<strong>en</strong>ter a la knapper, slidere, tekst-<br />

labels mm. Disse simple kompon<strong>en</strong>ter er placeret i paneler udelukk<strong>en</strong>de for at adskille dem i<br />

grupper. For <strong>en</strong> mere detaljeret g<strong>en</strong>nemgang af brugerinterfacets paneler h<strong>en</strong>vises <strong>til</strong><br />

kildekod<strong>en</strong> for metod<strong>en</strong> createGUI, hvor opsætning<strong>en</strong> af de <strong>en</strong>kelte paneler er inddelt i blokke<br />

af kode for at gør det mere overskueligt.<br />

Bruger<strong>en</strong>s handlinger registreres vha. Action- og ChangeList<strong>en</strong>ers. Her g<strong>en</strong>nemgås d<strong>en</strong><br />

overordnede idé med et eksempel på <strong>en</strong> List<strong>en</strong>er i debugPanel, der er føjet <strong>til</strong> <strong>en</strong> kompon<strong>en</strong>t<br />

som i eksemplet med dutycycleSlider herunder.<br />

periodSlider.addChangeList<strong>en</strong>er ( new ChangeList<strong>en</strong>er() {<br />

public void stateChanged(ChangeEv<strong>en</strong>t e) {<br />

outputPanel.setDutycycle(dutycycleSlider.getValue());<br />

dutycycleValueLabel.setText("ON-time:" + outputPanel.getDutyHigh() +<br />

"ms OFF-time:" + outputPanel.getDutyLow() + "ms");<br />

}<br />

} );<br />

Tabel 6: Handlinger ved ændring af dutycycleSlider.<br />

Til at lytte og reagere på kompon<strong>en</strong>ters hændelser b<strong>en</strong>yttes konstruktioner af anonyme indre<br />

klasser, hvorved implem<strong>en</strong>tering af de krævede metoder jf. d<strong>en</strong> pågæld<strong>en</strong>de List<strong>en</strong>ers<br />

interface undgås. Man bør dog være opmærksom på at de indre klasser ikke ligger inde i<br />

selve d<strong>en</strong> ydre klasse (TestApplication.java), m<strong>en</strong> indlæses hver for sig. Det tager længere tid,<br />

des flere klasser der skal indlæses, hvorfor eksempalvis større brugergrænseflader ikke bør<br />

b<strong>en</strong>ytte sig af d<strong>en</strong>ne metode. I stedet kan man lade d<strong>en</strong> ydre klasse implem<strong>en</strong>tere<br />

ChangeList<strong>en</strong>er, så kun <strong>en</strong> klasse indlæses, og derfor vises applett<strong>en</strong> hurtigere.<br />

De rester<strong>en</strong>de List<strong>en</strong>ers ligner d<strong>en</strong> forgå<strong>en</strong>de og vil ikke blive beskrevet yderligere her. Der<br />

h<strong>en</strong>vises <strong>til</strong> kildekod<strong>en</strong> bagerst i rapport<strong>en</strong> (bilag D.1.1) eller d<strong>en</strong> vedlagte DVD.<br />

Illustration 17: Panelers placering.<br />

Applett<strong>en</strong>s såkaldte look-and-feel ændres <strong>til</strong> udse<strong>en</strong>det for det operativsystem, som bruger<strong>en</strong><br />

anv<strong>en</strong>der, for at give bruger<strong>en</strong> <strong>en</strong> fornemmelse af at kunne g<strong>en</strong>k<strong>en</strong>de brugerinterfacet.<br />

Knapper, sliders, tekstfelter mv. vil fremstå som de, der som standard b<strong>en</strong>yttes af systemet.<br />

Test-applikation 25

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

Saved successfully!

Ooh no, something went wrong!