Die Klasse iMelody

In dem in Listing 2 gezeigten Beispiel wird die Klasse jcontrol.toolkit.iMelody verwendet, um den Entertainer auf Ihrem JControl-Gerät abzuspielen. Fügen Sie Ihrem JControl/IDE-Projekt dazu den folgenden Quelltext sowie die Datei Entertainer.imy hinzu.

1    import java.io.IOException;
2    
3    import jcontrol.io.Display;
4    import jcontrol.io.Resource;
5    import jcontrol.toolkit.iMelody;
6    
7    /**
8     * This example loads a melody from the flash memory
9     * and plays it using the <code>class iMelody</code>.
10     */
11    public class MelodyExample {
12      Display lcd;
13     
14      public MelodyExample() {
15        lcd = new Display();
16        lcd.drawString("Now playing:",40,10);
17        lcd.drawString("The Entertainer",30,30);
18       
19        try {
20          // load song from flash memory
21          Resource r = new Resource("Entertainer.imy");
22    
23          // create iMelody instance
24          iMelody im = new iMelody(r);
25         
26          // start playing
27          new Thread(im).start();
28                   
29        } catch (IOException e) {}
30      }
31    
32      public static void main(String[] args) {
33        new MelodyExample();
34      }
35    }
Listing 2: MelodyExample.java

Im obigen Beispiel MelodyExample ist zu sehen, dass für das Abspielen der imy-Datei nur sehr wenig Quelltext benötigt wird. Da es sich bei der Melodie um eine sog. Flash-Ressource handelt, muss zunächst ein Resource-Objekt erzeugt werden, damit darauf zugegriffen werden kann. Dieses wird dann lediglich an eine Instanz der Klasse iMelody übergeben, die die Datei dann über den angeschlossenen Buzzer abspielt. Der Abspielvorgang selbst wird gestartet, indem ein Thread-Objekt von der iMelody-Instanz erzeugt und aufgerufen wird (Methode start()).

Im folgenden Bild 2 wird zeigt, wie das Projekt schließlich im Quellen-Navigator Ihrer JControl/IDE angezeigt wird.

Bild 2: Das MelodyExample im Quellen-Navigator der JControl/IDE

Programmier-Tipp: Die Verwendung eines eigenen Threads (Programmfaden) zum Abspielen der Melodie birgt viele Vorteile. Der wichtigste ist, dass das aufrufende Programm (hier MelodyExample) während der Wiedergabe der Melodie schon andere Aufgaben erledigen kann, wie z.B. auf eine Benutzereingabe warten oder eine Grafik generieren. Wenn jedoch, wie in unserem Beispiel, keine weiteren Befehle nach dem Thread-Aufruf folgen, wird das Programm dennoch von der virtuellen Java-Maschine des JControl-Geräts erst beendet, wenn das Abspielen der Melodie abgeschlossen ist.

Abschließend bleibt lediglich das Starten des Programms. Dazu wird das JControl/IDE-Projekt auf Ihr JControl-basiertes Gerät hochgeladen. Nach dem Upload wird Scott Joplins wundervolle Komposition über den Buzzer wiedergegeben.