PDF 941kB - Hochschule Ulm
PDF 941kB - Hochschule Ulm
PDF 941kB - Hochschule Ulm
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