POLITECHNIKA POZNAŃSKA. Oprogramowanie dla telefonów z systemem Windows Phone 8 obsługujących technologię NFC do sprawdzania listy obecności.



Podobne dokumenty
akademia androida Składowanie danych część VI

Tworzenie aplikacji na WP. Blog dotyczący.net oraz WP.

Instrukcja 5 Laboratorium z Podstaw Inżynierii Oprogramowania. Warstwy integracji z bazą danych: Wzorzec DAO Technologia ORM

Utworzenie aplikacji mobilnej Po uruchomieniu Visual Studio pokazuje się ekran powitalny. Po lewej stronie odnośniki do otworzenia lub stworzenia

Przewodnik krok po kroku:

Bazy danych dla producenta mebli tapicerowanych. Bartosz Janiak Marcin Sikora Wrocław r.

Rys. 3. Kod elementów na stronie po dodaniu kontrolek podstawowych.

Programowanie telefonów z Windows Phone 7, cz. 4

Prosta książka telefoniczna z wykorzystaniem zapisu do pliku

Programowanie obiektowe i zdarzeniowe

Programowanie obiektowe i zdarzeniowe wykład 1 Wprowadzenie do programowania zdarzeniowego

Instrukcja laboratoryjna cz.4

Rozwój aplikacji modułowych Paweł Brudnicki. Dodanie modułu

Rozdział 3. Zapisywanie stanu aplikacji w ustawieniach lokalnych

Wykład 12. Programowanie serwera MS SQL 2005 w C#

Laboratorium programowania urządzeń mobilnych

- Narzędzie Windows Forms. - Przykładowe aplikacje. Wyższa Metody Szkoła programowania Techniczno Ekonomiczna 1 w Świdnicy

Programowanie telefonów z Windows Phone 7, cz. 2

1 LINQ. Zaawansowane programowanie internetowe Instrukcja nr 1

Programowanie obiektowe i zdarzeniowe wykład 4 Kompozycja, kolekcje, wiązanie danych

Sposoby tworzenia projektu zawierającego aplet w środowisku NetBeans. Metody zabezpieczenia komputera użytkownika przed działaniem apletu.

Db4o obiektowa baza danych wersja.net

Instrukcja 2 Laboratorium z Podstaw Inżynierii Oprogramowania

Zaawansowane aplikacje WWW - laboratorium

Wprowadzenie do laboratorium. Zasady obowiązujące na zajęciach. Wprowadzenie do narzędzi wykorzystywanych podczas laboratorium.

Ćwiczenie 1. Kolejki IBM Message Queue (MQ)

Leszek Stasiak Zastosowanie technologii LINQ w

Instrukcja laboratoryjna cz.3

xmlns:prism= c. <ContentControl prism:regionmanager.regionname="mainregion" />

REFERAT PRACY DYPLOMOWEJ

Microsoft.NET: ASP.NET MVC + Entity Framework (Code First)

Walidacja danych w ASP.NET MVC

1. Czynności przygotowujące aplikację działającą na platformie Java SE Biblioteka5 (należy ją pobrać z załącznika z p.1)

Laboratorium Programowania Kart Elektronicznych

ASP.NET MVC. Podstawy. Zaawansowane programowanie internetowe Instrukcja nr 3

Badania poziomu bezpieczeństwa portalu dostępowego do infrastruktury projektu PL-Grid

Multimedia JAVA. Historia

Instrukcja laboratoryjna cz.3

1. Wprowadzenie do WPF i XAML. Tworzenie interfejsu użytkownika.

Kurs programowania. Wykład 13. Wojciech Macyna. 14 czerwiec 2017

akademia androida Service, BroadcastReceiver, ContentProvider część IV

MonoGame. Wieloplatformowe gry w C# Mateusz Cicheński

5 AS SP.NET MVC. Walidacja danych. Zaawansowane programowanie internetowe Instrukcja nr 5

Wstęp - Prosta aplikacja internetowa w technologii Java EE 5. Programowanie komponentowe 1

Programowanie proceduralne INP001210WL rok akademicki 2018/19 semestr letni. Wykład 6. Karol Tarnowski A-1 p.

Politechnika Gdańska Katedra Optoelektroniki i Systemów Elektronicznych

Tworzenie i wykorzystanie usług

Praca w środowisku Visual Studio 2008, Visual C

Near Field Communication

Projektowanie oprogramowania. Warstwa integracji z bazą danych oparta na technologii ORM Platforma Java EE Autor: Zofia Kruczkiewicz

public enum Environment { Development("Deweloperskie"), Test("Testowe"), Production("Produkcyjne"); private String name;

I. WSTĘP. Przykład 1. Przykład 2. Programowanie czyli tworzenie programów komputerowych (aplikacji komputerowych)

1.1. System otwartych baz danych ODBC. System otwartych baz danych ODBC. Interfejs ODBC. Interfejs ODBC. System otwartych baz danych ODBC

Systemy mobilne. Laboratorium. Dostęp do danych GPS w Windows Phone 7

Java. Programowanie Obiektowe Mateusz Cicheński

Platformy programistyczne:.net i Java L ABORATORIUM 7,8: HACKATHON - JTTT

Protokół JDBC współpraca z relacyjnymi bazami danych lab4. Dr inż. Zofia Kruczkiewicz Programowanie aplikacji internetowych

Instrukcja 10 Laboratorium 13 Testy akceptacyjne z wykorzystaniem narzędzia FitNesse

Bezpieczne uruchamianie apletów wg

Przykładowa dostępna aplikacja w Visual Studio - krok po kroku

Poznaj ASP.NET MVC. Kamil Cieślak Microsoft Student Partner

Wykład 8: klasy cz. 4

Systemy operacyjne na platformach mobilnych

Laboratorium z przedmiotu: Inżynieria Oprogramowania INEK Instrukcja 7

Programowanie obiektowe

Politechnika Krakowska im. Tadeusza Kościuszki. Karta przedmiotu. obowiązuje w roku akademickim 2012/2013. Przedmioty kierunkowe

Ekspert radzi. mechanizm w enova, umożliwiający wskazanie domyślnej drukarki dla danego stanowiska i wydruku. Strona 1 z 8. Ekspert radzi.

Projektowanie aplikacji internetowych laboratorium

Metody dostępu do danych

Tytuły Wykonawcze. Opis systemu tworzenia dokumentacji TW-1

Uniwersytet im. Adama Mickiewicza w Poznaniu Wydział Matematyki i Informatyki. Projekt bazy danych <Moja baza>

Instrukcja tworzenia aplikacji EE na bazie aplikacji prezentowanej na zajęciach lab.4 z PIO umożliwiająca przez sieć dostęp wielu użytkownikom.

Sterownik komunikacyjny CommDTM dla ProfiCore Ultra

1. CZYM JEST SERIALIZACJA

Instrukcja generowania certyfikatu PFRON i podpisywania dokumentów aplikacji SODiR w technologii JS/PKCS 12

Politechnika Krakowska im. Tadeusza Kościuszki. Karta przedmiotu. obowiązuje studentów rozpoczynających studia w roku akademickim 2012/2013

Aktywacja karty ELS. Instrukcja dla studentów pierwszego roku Uniwersytetu Rzeszowskiego

Podstawy wykorzystania bibliotek DLL w skryptach oprogramowania InTouch

Klasy i obiekty cz II

INSTRUKCJA UŻYTKOWNIKA usługi ebanknet oraz Bankowości Mobilnej PBS Bank

Integracja Comarch e-sprawozdania

Android, wprowadzenie do SDK

Wprowadzenie do technologii JavaServer Faces 2.1 na podstawie

Microsoft Visual C++.NET Edycja polska: Wydawnictwo RM

Katalog książek cz. 2

Instrukcja tworzenia aplikacji bazodanowej opartej o technologię Oracle i platformę.net

Fragmenty są wspierane od Androida 1.6

msgbox("akcja: Początek, argument: " + argument.tostring()); Thread.Sleep(1000); //opóźnienie msgbox("akcja: Koniec"); return DateTime.Now.

Wstęp do programowania INP001213Wcl rok akademicki 2017/18 semestr zimowy. Wykład 12. Karol Tarnowski A-1 p.

Instrukcja implementacji sterownika wirtualnego portu szeregowego dla systemu Android. Opracowanie: Elzab Soft sp. z o.o.

Programowanie obiektowe

Logger. Następnie w klasie Bootstrapper muimy zarejestrować nasz nowy logger:

Testowanie II. Celem zajęć jest zapoznanie studentów z oceną jakości testów przy wykorzystaniu metryk pokrycia kodu testami (ang. code coverage).

Platforma e-learningowa

Instrukcja laboratoryjna cz.2

Instrukcja podłączania komputerów z systemem Microsoft Windows Vista/7 do sieci eduroam

Wstęp. Ale po co? Implementacja

Paweł Cieśla. Dokumentacja projektu

Transkrypt:

POLITECHNIKA POZNAŃSKA Oprogramowanie dla telefonów z systemem Windows Phone 8 obsługujących technologię NFC do sprawdzania listy obecności. Programowanie Kart Elektronicznych Systemy Informatyczne w Zarządzaniu Michał Majer 94447 str. 1

WSTĘPNY OPIS PROJEKTU... 3 ROZDZIAŁ 1. INFORMACJE TECHNICZNE... 4 1.1. WYMAGANIA... 4 1.2. ŚRODOWISKO I JĘZYKI PROGRAMOWANIA... 4 ROZDZIAŁ 2. SZCZEGÓŁOWY OPIS OPROGRAMOWANIA... 5 2.1. PROCES APLIKACJI... 5 2.2. INTERFEJS I OBSŁUGA APLIKACJI... 5 2.3. BAZA DANYCH... 9 2.4. ODCZYT DANYCH WYKORZYSTUJĄC TECHNOLOGIĘ NFC... 10 2.5. USŁUGA SKYDRIVE... 12 ROZDZIAŁ 3. WNIOSKI... 14 LITERATURA... 15 str. 2

WSTĘPNY OPIS PROJEKTU Niniejszy dokument został przygotowany w celach zaliczenia przedmiotu Programowanie Kart Elektronicznych i jest dokumentacją projektu aplikacji o roboczej nazwie ELS Reader. Oprogramowanie będzie miało na celu automatyzację weryfikacji obecności studentów na zajęciach. Zainstalowane na wybranym urządzeniu oprogramowanie będzie odnotowywać obecność uczestników na zajęciach poprzez zbliżenie ELS do urządzenia. Po zbliżeniu legitymacji do telefonu z aktywnym oprogramowaniem na ekranie zostaną zaprezentowane informacje o posiadaczu karty tym samym potwierdzając obecność danego studenta na bieżących zajęciach. Zebrane informacje zostaną przechowane w wewnętrznej bazie danych aplikacji, a następnie wyeksportowane do usługi SkyDrive. str. 3

ROZDZIAŁ 1. INFORMACJE TECHNICZNE 1.1. Wymagania Do poprawnego działania aplikacji wymagane jest posiadanie telefonu z zainstalowanym systemem operacyjny Windows Phone w wersji 8 obsługującego technologię NFC. 1.2. Środowisko i języki programowania Do realizacji projektu zostało wykorzystane środowisko deweloperskie Visual Studio 2013 oraz Blend dla Visual Studio 2013. Aplikacja została napisana w języku Windows Phone App C# (Visual Studio), a wizualizacja aplikacji na urządzeniu została zinterpretowana za pomocą znaczników XAML (wsparcie przy pomocy Microsoft Blend). str. 4

ROZDZIAŁ 2. SZCZEGÓŁOWY OPIS OPROGRAMOWANIA 2.1. Proces aplikacji Cykl życia aplikacji został zamodelowany i przedstawiony na rysunku 1. Rysunek 1. Cykl życia aplikacji W momencie uruchomienia aplikacji przez użytkownika rozpoczynany jest cykl życia projektu. Wykładowca definiuje zajęcia na których chce przeprowadzić weryfikację obecności uczestników: wprowadza nazwę przedmiotu, kierunek grupy, numer grupy oraz godziny trwania zajęć. Po zatwierdzeniu wpisanych danych urządzenie przechodzi w tryb sprawdzania obecności i oczekuje na zbliżenie legitymacji studenckiej. Poprawny odczyt danych z przybliżonej karty powoduje zapis przekazanych danych i wyświetlenie ich na ekranie urządzenia. Urządzenie będzie oczekiwało na zbliżenie ELS do 15 min od rozpoczęcia zajęć. Po tym czasie sesja wygaśnie, a zebrane dane zostaną wyeksportowane do usługi SkyDrive. 2.2. Interfejs i obsługa aplikacji W celu zapewnienia jak najłatwiejszej obsługi całego procesu aplikacji wykonany został przejrzysty i łatwy w obsłudze interfejs. Wraz z uruchomieniem aplikacji użytkownik zobaczy interfejs widoczny na rysunku nr 2. Widok programu umożliwia użytkownikowi zdefiniowanie zajęć. W widoczne pola należy wpisać: Nazwę prowadzonych zajęć Kierunek grupy Numer grupy Godzinę rozpoczęcia zajęć Godzinę zakończenia zajęć Po wybraniu przycisku Rozpocznij sprawdzanie obecności! urządzenie rozpocznie oczekiwanie na zbliżenie elektronicznej legitymacji studenckiej. str. 5

Rysunek 2. Ekran startowy - definiowania zajęć Rysunek 3. Zachęcenie do zbliżenia karty str. 6

Zrzut ekranu przestawiony na rysunku 3 zachęca do zbliżenia karty w celu potwierdzenia swojej obecności na zajęciach. W momencie zbliżenia elektronicznej karty studenckiej algorytm odczytuje dane i weryfikuje czy dane są zgodne z oczekującymi. W przypadku gdy dane nie są odpowiednie aplikacja nie zareaguje i będzie oczekiwała na kolejne zbliżenie. Gdy pozyskane dane będą prawidłowe aplikacja przejdzie do widoku potwierdzenia (rysunek 4). Rysunek 4.Pomyślny odczyt danych Po zakończeniu sesji sprawdzania obecności (15 min tzw. studencki kwadrans ) aplikacja eksportuje zebrane dane do usługi SkyDrive. str. 7

Przykładowy kod definiujący interfejs: <phone:phoneapplicationpage x:class="elsreader.pagemovecloserels" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:phone="clr-namespace:microsoft.phone.controls;assembly=microsoft.phone" xmlns:shell="clr-namespace:microsoft.phone.shell;assembly=microsoft.phone" xmlns:d="http://schemas.microsoft.com/expression/blend/2008" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" FontFamily="StaticResource PhoneFontFamilyNormal" FontSize="StaticResource PhoneFontSizeNormal" Foreground="StaticResource PhoneForegroundBrush" SupportedOrientations="Portrait" Orientation="Portrait" mc:ignorable="d" shell:systemtray.isvisible="true"> <!--LayoutRoot is the root grid where all page content is placed--> <Grid x:name="layoutroot"> <Grid.Background> <ImageBrush Stretch="None" ImageSource="Assets/bg.jpg"/> </Grid.Background> <Grid.RowDefinitions> <RowDefinition Height="Auto"/> <RowDefinition Height="*"/> </Grid.RowDefinitions> <StackPanel x:name="titlepanel" Grid.Row="0" Margin="12,17,0,28"> <TextBlock Text="Weryfikator obecności" Style="StaticResource PhoneTextNormalStyle" Margin="12,0"/> </StackPanel> <Grid x:name="contentpanel" Grid.Row="1" Margin="12,0,12,0"/> <StackPanel x:name="contentstackpanel" Grid.Row="1" Margin="12,17,0,28"> <Image Height="346" Source="/Assets/nfc.png" VerticalAlignment="Center" HorizontalAlignment="Center" Margin="61,100,61,0"/> <TextBlock TextWrapping="Wrap" Text="Zbliż kartę aby odczytać dane" HorizontalAlignment="Center"/> </StackPanel> </Grid> </phone:phoneapplicationpage> str. 8

2.3. Baza danych Aplikacja wykorzystuje bazę danych SQLite do przechowywania danych. Dane zapisywane są w tabelach przedstawionych na rysunku 5. Rysunek 5. Diagram bazy danych Tabele są odzwierciedleniem utworzonych klas w programie. Tabel student przechowuje dane odczytane z legitymacji studenckiej, zapisuje dane takie jak: imię, nazwisko, numer albumu, numer pesel oraz numer seryjny legitymacji. Tabela class odnosi się do utworzonych przez operatora aplikacji zajęć. Przechowywanie tych danych w tabeli ułatwi wykładowcy proces wyboru zajęć dla których weryfikowana będzie obecność. Tabele activityclass oraz presence dotyczą procesu odnotowywania obecności studentów dla utworzonych zajęć. Kod definicji tabel: public sealed class Student [PrimaryKey, AutoIncrement] public int id get; set; public string name get; set; public string surename get; set; public int albumnumber get; set; public int peselnumber get; set; public int serialnumber get; set; public override string ToString() return name + " " + surename; public sealed class Class [PrimaryKey, AutoIncrement] public int id get; set; public string classname get; set; public string specializationname get; set; public int groupnumber get; set; public DateTime startat get; set; public DateTime EndAt get; set; public override string ToString() return classname; str. 9

2.4. Odczyt danych wykorzystując technologię NFC NFC (Near Field Communication) jest to komunikacja bezprzewodowa niewielkiego zasięgu. Umożwia ona przenoszenie informacji między telefonem, a innym urządzeniem NFC (telefon, tag, urządzenia płatnicze). Ograniczenia w Windows Phone 8 dotyczące NFC: Brak możliwości zabezpieczenia przed zapisem tagów. Brak możliwości sformatowania tagów do NDEF. Aby działały z naszym telefonem należy kupić sformatowane tagi lub użyć urządzania wspierającego formatowanie (np. Android). W przypadku uszkodzenia taga też nie jesteśmy w stanie go naprawić. Tagi mogą zawierać tylko wiadomość w formacie NDEF. Brak możliwości użycia całej dostępnej pamięci taga znaczniki, korekcja błędów, API nie wspiera zapisywania wiadomości w formacie NDEF domyślnie. Możemy to zrobić przygotowując wiadomość w formacie binarnym lub posłużyć się zewnętrzną biblioteką. Urządzenie domyślnie nie jest w stanie odczytać wszystkich wiadomości zapisanych na tagu. System wspiera odczyt tylko pierwszej wiadomości. Dodatkowe mogą być odczytane za pomocą własnej aplikacji. Nie ma możliwości odczytania taga przez aplikację działającą w tle. Z powodu ograniczeń WP8 dotyczących NFC realizacja projektu (a konkretniej odczyt danych z ELS) jest niemożliwy na dzień dzisiejszy! Przykładowy kod programu do obsługi NFC w Windows Phone 8: 1. Weryfikacja czy urządzenie posiada odbiornik NFC: ProximityDevice proximitydevice = ProximityDevice.GetDefault(); if (proximitydevice!= null) // Urządzenie ma moduł NFC proximitydevice.devicearrived += proximitydevice_devicearrived; proximitydevice.devicedeparted += proximitydevice_devicedeparted; else // Brak modułu NFC 2. Odczyt tagu: ProximityDevice proximitydevice = ProximityDevice.GetDefault(); if (proximitydevice!= null) long subscribedmessageid = proximitydevice.subscribeformessage("writeabletag", Handler); void Handler(ProximityDevice device, ProximityMessage message) str. 10

int writablesize = BitConverter.ToInt32(message.Data.ToArray(), 0); this.showmessage("messagetype: " + message.messagetype + "\n" + "DataAsString:" + message.dataasstring + "\n" + "SubscriptionId: " + message.subscriptionid + "\n" + "Size of tag: " + writablesize + "\n"); proximitydevice.stopsubscribingformessage(subscribedmessageid); 3. Odczyt tagu(2): this.subscribedmessageid = this.proximitydevice.subscribeformessage( "Windows.mySubType", Handler2); private void Handler2(ProximityDevice device, ProximityMessage message) this.proximitydevice.stopsubscribingformessage( this.subscribedmessageid); byte[] buf = message.data.toarray(); this.showmessage("messagetype: " + message.messagetype + "\n" +"Data:"+Encoding.Unicode.GetString(buf, 0, buf.length)+"\n" + "SubscriptionId: " + message.subscriptionid + "\n"); 4. Zapis danych do tagu: World", this.proximitydevice.publishmessage("windows.samplemessage", "Hello Handler); this.proximitydevice.publishurimessage(new System.Uri("http://www.onet.pl", Handler); this.proximitydevice.publishbinarymessage("windows:writetag.mysubtype", Encoding.Unicode.GetBytes("Hello World").AsBuffer(), Handler); Uri uri = new Uri("http://www.wp.pl"); byte[] buffer = Encoding.Unicode.GetBytes(uri.ToString()); proximitydevice.publishbinarymessage("windowsuri:writetag", buffer.asbuffer(), Handler); private void Handler(ProximityDevice sender, long messageid) this.proximitydevice.stoppublishingmessage(messageid); this.showmessage("wysłano / Zapisano!"); str. 11

2.5. Usługa SkyDrive Windows Live Skydrive jest wydzieloną przestrzenią na serwerach Microsoftu, na której umieszczać możemy własne pliki i dane. Usługa zadebiutowała w Polsce w maju 2008 roku. Obecnie Windows Live Skydrive zapewnia aż 25 GB pojemności do wykorzystania i to w zupełności za darmo! Zalet z tego faktu jest mnóstwo, a przede wszystkim jest to idealny sposób na uzyskiwanie dostępu do plików niezależnie od komputera, poprzez który łączymy się z siecią. W projekcie usługa zostanie użyta do przechowywania danych pozyskanych przez aplikację. Umożliwi to łatwy dostęp i możliwość prostej edycji przekazanych informacji. Przykładowy kod programu: 1. Logowanie do systemu SkyDrive private void skydrive_sessionchanged(object sender, LiveConnectSessionChangedEventArgs e) if (e!= null && e.status == LiveConnectSessionStatus.Connected) this.client = new LiveConnectClient(e.Session); this.getaccountinformations(); else this.client = null; InfoText.Text = e.error!= null? e.error.tostring() : string.empty; private async void GetAccountInformations() try LiveOperationResult operationresult = await this.client.getasync("me"); var jsonresult = operationresult.result as dynamic; string firstname = jsonresult.first_name?? string.empty; string lastname = jsonresult.last_name?? string.empty; InfoText.Text = "Welcome " + firstname + " " + lastname; catch (Exception e) InfoText.Text = e.tostring(); str. 12

2. Eksport danych private string filename = "sample.dat"; private IsolatedStorageFile isf = IsolatedStorageFile.GetUserStoreForApplication(); private void CreateFileIntoIsolatedStorage() if (isf.fileexists(filename)) isf.deletefile(filename); IsolatedStorageFileStream isfstream = new IsolatedStorageFileStream(fileName, FileMode.Create, IsolatedStorageFile.GetUserStoreForApplication()); byte[] output = new byte[25]; for (int i = 0; i < 25; i++) output[i] = (byte)(i); isfstream.write(output, 0, output.length); isfstream.close(); str. 13

ROZDZIAŁ 3. WNIOSKI Pomimo wsparcia NFC dla urządzeń z systemem Windows Phone w wersji 8 nie jest możliwe odczytanie danych z elektronicznej legitymacji studenckiej. Biblioteki dostarczone przez producenta umożliwiają odczyt danych tylko i wyłącznie w formacie NDEF. Liczne ograniczenia nałożone przez WP dla technologii NFC uniemożliwiają realizację tematu dla wybranej platformy. Rozwiązaniem problemu pozostaje zmiana platformy na konkurencyjną platformę Android. str. 14

LITERATURA [1] Ian Griffiths Programowanie C# 5.0 [2] Daniel Vaughan Windows Phone Unleashed [3] Kyle Byrns Beginning Windows 8 Application Development XAML Edition str. 15