13.01.2014 Aufrufe

PDF 941kB - Hochschule Ulm

PDF 941kB - Hochschule Ulm

PDF 941kB - Hochschule Ulm

MEHR ANZEIGEN
WENIGER ANZEIGEN

Erfolgreiche ePaper selbst erstellen

Machen Sie aus Ihren PDF Publikationen ein blätterbares Flipbook mit unserer einzigartigen Google optimierten e-Paper Software.

Implementierung<br />

Nachdem die Nachricht vom Reader an die App übermittelt wurde, befindet sich die<br />

App in der ”<br />

Aufgabe“ empfangen, die ebenso teil der Klasse Nfc ist. Beim Erhalt einer<br />

Nachricht, die mit dem abonnierten Nachrichtentyp übereinstimmt, wie in Listing 5<br />

festgelegt wurde, wird der MessageReceivedHandler() Event Handler für das Event<br />

MessageReceived aufgerufen. Im Wesentlichen wird in dem Event Handler die erhaltene<br />

IBuffer Repräsentation von der Property Data des Objekts message zurück in die<br />

NdefMessage Repräsentation gewandelt, wie in Listing 9 zu sehen ist.<br />

1 private void MessageReceivedHandler ( ProximityDevice sender ,<br />

ProximityMessage message )<br />

2 {<br />

3 byte [] rawMessage = message . Data . ToArray ();<br />

4 NdefMessage ndefMessage = NdefMessage . FromByteArray (<br />

rawMessage );<br />

5<br />

6 // ...<br />

7<br />

8 this . MessageReceivedDelegate ( ndefMessage );<br />

9 }<br />

Listing 9: Empfangen einer Nachricht.<br />

Anschließend wird das ndefMessage Objekt dem MessageReceivedDelegate() delegate<br />

übergeben. Mithilfe von delegates ist es möglich unter C# das Observer Pattern<br />

mit wenig Code umzusetzen. In Abbildung 27 sind zwei öffentlich zugängliche delegates<br />

definiert: MessageReceivedDelegate() und DeviceDepartedDelegate(). Diesen delegates<br />

können Methoden zugewiesen werden, die aufgerufen werden, wenn das jeweilige<br />

delegate aufgerufen wird. In Listing 10 wird gezeigt, wie ein Event Handler registriert<br />

werden kann.<br />

1 this . nfc . MessageReceivedDelegate +=<br />

MessageReceivedFromReaderHandler ;<br />

2 this . nfc . DeviceDepartedDelegate += () =><br />

3 {<br />

4 // ...<br />

5 };<br />

Listing 10: App registriert ihre Event Handler.<br />

Analog dazu registriert der Reader die Methode MessageReceivedFromAppHandler<br />

() als Event Handler für das Event MessageReceived. Da die App aber eine Nachricht<br />

vom Reader erhalten hat, wird zunächst der MessageReceivedFromReaderHandler()<br />

Event Handler von der App aufgerufen, um die Nachricht zu bearbeiten. Anschließend<br />

überträgt die App selbst als initiator eine Nachricht an den Reader über die SendMessage<br />

() Methode. An dieser Stelle sei angemerkt, dass die Klasse MainPage in einer Windows<br />

Phone 8 App der typische Einstiegspunkt für einen Programmierer ist. Daher befinden<br />

54

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!