4. Hårdvarugränssnitt och drivrutiner
4.1 Streckkodsskrivare
Det finns en streckkodsskrivare i systemet. Gränssnittet till skrivaren är följande:
public interface BarcodePrinter { /* Print a bicycleID as a barcode. * Bicycle ID should be a string of 5 characters, where every * character can be '0', '1',... '9'. */ public void printBarcode(String bicycleID); }
Streckkodsskrivaren skriver ut streckkoder. Ett exempel visas i figur 4.1. Streckkoden består av 13 siffror som visas både i maskinläsbar streckkod och i siffror undertill. Det 5-siffriga nummer projektet har tillgång till representeras av siffrorna 8-12. Övriga siffor i koden utgörs av en landskod, en tillverkarkod samt en kontrollsumma.
4.2 Pinkodsterminal
Vid entrédörren finns en numerisk knappsats med två lysdioder enligt figur 4.2. Användaren (dvs. cykelägaren) kan använda knappsatsen för att ange en PIN-kod för att släppas in i garaget. Gränssnittet till hårdvaran är följande:
public interface PinCodeTerminal {
/* Register bicycle garage manager so
* that the pin code terminal knows
* which manager to call when a user has
* pressed a key. */
public void register(BicycleGarageManager manager);
/* Turn on LED for lightTime seconds.
* Colour:
* colour = RED_LED = 0 => red
* colour = GREEN_LED = 1 => green */
public void lightLED(int colour, int lightTime);
public static final int RED_LED = 0,
GREEN_LED = 1;
}
4.3 Streckkodsläsare
Det finns två streckkodsläsare i systemet enligt figur 4.3. De har båda följande gränssnitt
public interface BarcodeReader {
/* Register bicycle garage manager
* so that the bar code reader knows
* which manager to call when a user
* has used the reader. */
public void register(BicycleGarageManager manager);
}
4.4 Elektroniskt lås
Gränssnittet till elektroniska lås är följande:
public interface ElectronicLock { /* Open the lock for timeOpen seconds. */ public void open(int timeOpen); }
4.5 Huvudprogram
Class | Implements interface |
ElectronicLockTestDriver | ElectronicLock |
BarcodePrinterTestDriver | BarcodePrinter |
PinCodeTerminalTestDriver | PinCodeTerminal |
BarcodeReaderEntryTestDriver | BarcodeReader |
BarcodeReaderExitTestDriver | BarcodeReader |
Tabell 4.1: Exempel på klasser som implementerar interface
Om du har klasser som implementerar gränssnittet enligt tabell 4.1 kan huvudprogrammet till exempel se ut enligt följande:
public class BicycleGarage { public BicycleGarage() { BicycleGarageManager manager = new BicycleGarageManager(); ElectronicLock entryLock = new ElectronicLockTestDriver("Entry lock"); ElectronicLock exitLock = new ElectronicLockTestDriver("Exit lock"); BarcodePrinter printer = new BarcodePrinterTestDriver(); PinCodeTerminal terminal = new PinCodeTerminalTestDriver(); manager.registerHardwareDrivers(printer, entryLock, exitLock, terminal); terminal.register(manager); BarcodeReader readerEntry = new BarcodeReaderEntryTestDriver(); BarcodeReader readerExit = new BarcodeReaderExitTestDriver(); readerEntry.register(manager); readerExit.register(manager); } public static void main(String[] args) { new BicycleGarage(); } }
4.6 Projektmaterial
I programexemplet simuleras hårdvara (streckkodsskrivare, elektroniska lås etc.) av klasserna i tabell 4.1. I det riktigta systemet ersätts de av klasser som kommunicerar med hårdvarans riktiga drivrutiner. Figur 4.4 visar de simulerade gränssnitten mot hårdvaran.
4.6.1 Material för nedladdning
Följande material kan laddas ned:
- Java interfaces
- Test-drivare som simulerar hårdvara: Detta är enkla implementationer av gränssnitten för hårdvaran, t ex ElectronicLock och BarcodePrinter, som ni kan använda när ni testar er programvara. ( javadoc ) För att lägga till klasserna i ett eclipse-projekt välj File->Import och sedan "Archive file".