Sensory w WP7. Wykład 11 Sensory. GPS i mapa.

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

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

Rozdział 3. Zapisywanie stanu aplikacji w ustawieniach lokalnych

Mobilne Aplikacje Multimedialne

akademia androida Sensory część V Mobile Applications Developers

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

Programowanie obiektowe i zdarzeniowe

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

Sensory i Aktuatory Laboratorium. Mikromechaniczny przyspieszeniomierz i elektroniczny magnetometr E-kompas

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

Temat 13. Czujniki Dlaczego Twój Smartfon jest taki smart?

Aplikacje Systemów. Nawigacja inercyjna. Gdańsk, 2016

Mobilne aplikacje multimedialne

Programowanie aplikacji dla technologii mobilnych. mgr inż. Anton Smoliński

Marcin Luckner Politechnika Warszawska Wydział Matematyki i Nauk Informacyjnych

1. Pomocnicze. 2. Po zalogowaniu wybierz Pulpit nawigacyjny (Dashboard).

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

W powyższym kodzie utworzono wyliczenie dni tygodnia.

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

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

Laboratorium programowania urządzeń mobilnych

Sensory i systemy pomiarowe Prezentacja Projektu SYNERIFT. Michał Stempkowski Tomasz Tworek AiR semestr letni

Zaawansowane programowanie w języku C++ Programowanie obiektowe

Wprowadzenie do projektu QualitySpy

using System;... using System.Threading;

Składnia C++ Programowanie Obiektowe Mateusz Cicheński

Wstęp. Ale po co? Implementacja

Mechatronika i inteligentne systemy produkcyjne. Sensory (czujniki)

Współczesny smartfon co można zmierzyć? Damian Pyś

Język C++ wykład VII. uzupełnienie notatek: dr Jerzy Białkowski. Programowanie C/C++ Język C++ wykład VII. dr Jarosław Mederski. Spis.

Podstawy Nawigacji. Kierunki. Jednostki

Przyspieszenie na nachylonym torze

PROGRAM TESTOWY LCWIN.EXE OPIS DZIAŁANIA I INSTRUKCJA UŻYTKOWNIKA

Kalibracja wskaźnika wymaga jednorazowego podłączenia LPG Sensora do komputera za pomocą przewodu microusb

Bezpieczne uruchamianie apletów wg

Język ludzki kod maszynowy

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

Pola i metody statyczne. Klasy zawierające pola i metody statyczne

Kod produktu: MP01105T

Opis elementów ekranu OSD by Pitlab&Zbig

Programowanie obiektowe zastosowanie języka Java SE

Instrukcja do ćwiczenia jednopłaszczyznowe wyważanie wirników

Informatyka I. Klasy i obiekty. Podstawy programowania obiektowego. dr inż. Andrzej Czerepicki. Politechnika Warszawska Wydział Transportu 2018

Laboratorium tekstroniki

Politechnika Gdańska Katedra Optoelektroniki i Systemów Elektronicznych

Kinect vs VR, czyli technologie sensoryczne stosowane w konsolach do gier.

Menu. Badające rozproszenie światła,

STWORZENIE MOBILNEJ APLIKACJI,

Ziemskie pole magnetyczne

Języki i metody programowania Java Lab2 podejście obiektowe

Dzisiejszy wykład. Wzorce projektowe. Visitor Client-Server Factory Singleton

Nazwisko i imię: Zespół: Data: Ćwiczenie nr 9: Swobodne spadanie

WYZNACZANIE POŁOŻENIA GŁOWICY OPTOELEKTRONICZNEJ Z WYKORZYSTANIEM CZUJNIKÓW MEMS

OKREŚLENIE WPŁYWU WYŁĄCZANIA CYLINDRÓW SILNIKA ZI NA ZMIANY SYGNAŁU WIBROAKUSTYCZNEGO SILNIKA

Programowanie aplikacji na urządzenia mobilne

Obsługa SMS i telefonii

Wykład 6 Dziedziczenie cd., pliki

Kalibracja czujnika temperatury zestawu COACH Lab II+. Piotr Jacoń. K-5a I PRACOWNIA FIZYCZNA

Podstawy tworzenia aplikacji z wykorzystaniem języka Java ME ćwiczenia 1

Laboratorium Programowanie urządzeń mobilnych

PARADYGMATY PROGRAMOWANIA Wykład 4

Instrukcja laboratoryjna nr.4

Wykład 8: klasy cz. 4

Opis pojazdu oraz komputera DTA

Składnia C++ Programowanie Obiektowe Mateusz Cicheński

F&F Filipowski Sp. J Pabianice, ul. Konstantynowska 79/81 tel KARTA KATALOGOWA

Programowanie obiektowe

Wykład 2: Podstawy Języka

Komputer rowerowy z GPS GB-580P Szybki start

Zaawansowane programowanie w języku C++ Klasy w C++

PODEJŚCIE OBIEKTOWE. Przykład 1 metody i atrybuty statyczne

Języki programowania imperatywnego

Technologie obiektowe

Aktualizacja, maj 2008 rok

Aplikacje w środowisku Java

Programowanie obiektowe

Komputerowe systemy pomiarowe. Wielkości mierzalne. Przetworniki i czujniki pomiarowe

kierowanych pojazdów podwodnych

Oprogramowanie analizatorów wibracji SignalCalc TURBO oprogramowanie do diagnostyki maszyn obrotowych

Java: interfejsy i klasy wewnętrzne

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

Paweł Kogut. Projekt efizyka Multimedialne środowisko nauczania fizyki dla szkół ponad gimnazjalnych. Wirtualne Laboratorium Fizyki Ćwiczenie:

Wykład FIZYKA II. 5. Magnetyzm. Dr hab. inż. Władysław Artur Woźniak

GUI - projektowanie interfejsów

Co to jest klasa? Z programistycznego punktu widzenia klasa stanowi typ danych, który odwzorowuje wspólne cechy jakiegoś obiektu.

Język C++ wykład VIII

Obiekt klasy jest definiowany poprzez jej składniki. Składnikami są różne zmienne oraz funkcje. Składniki opisują rzeczywisty stan obiektu.

Program emulatora GPS pobieramy ze strony z działu Pobieralnia.

Materiały do zajęć VII

Wykład 7: Pakiety i Interfejsy

Pomiar indukcji pola magnetycznego w szczelinie elektromagnesu

Aplikacje Mobilne W systemie Domu Inteligentnego dostępne są aplikacje dla urządzeń mobilnych z systemami zarówno Android jak i ios.

Veronica. Wizyjny system monitorowania obiektów budowlanych. Instrukcja oprogramowania

Języki i metodyka programowania. Język C# pętle, sterowanie, wyjątki

Sprawozdanie z realizacji projektu:

MIERNIK POLA MAGNETYCZNEGO TM

Programowanie w Javie

Programowanie w Javie 1 Wykład i Ćwiczenia 3 Programowanie obiektowe w Javie cd. Płock, 16 października 2013 r.

GUI - projektowanie interfejsów

Badanie ruchu złożenia

Transkrypt:

Kwalifikacje kadry dydaktycznej kluczem do rozwoju Uczelni PROJEKT WSPÓŁFINANSOWANY ZE ŚRODKÓW UNII EUROPEJSKIEJ I EUROPEJSKIEGO FUNDUSZU SPOŁECZNEGO Uniwersytet Kazimierza Wielkiego w Bydgoszczy Wydział Matematyki, Fizyki i Techniki specjalność: Sieci i systemy rozproszone Technologie mobilne i rozproszone na platformie.net Wykład 11 Sensory. GPS i mapa. Sensory w WP7 Standardowo dostępne A-GPS, Accelerometer, Compass, Gyro (opcja!), GPS, przyspieszenia, kompas, żyroskop. Light, światła. Proximity zbliżeniowy 3 1

Akcelerometr Mierzy zmiany przyśpieszenia przechylanie i ruch telefonu w przestrzeni XYZ, w odniesieniu do kierunku pionowego. Wynik pomiaru wartość składowych przyśpieszenie ziemskiego, w czasie. 4 Pomiar Jeżeli telefon leży poziomo ekranem do góry składowa g z = 1 g g = 9,81 m/s 2 składowa g x, y = 0 5 Użycie akcelerometru W jaki sposób pobierać wartości akcelerometru zainicjować obiekty klasy Accelerometer, monitorować zmiany danych zdarzenie ReadingChanged, przekazać rezultat tego zdarzenia z powrotem do głównego wątku strony zdarzenie uruchomione jest w innym wątku użyć tych wartości w aplikacji. biblioteka + n.space: Microsoft.Devices.Sensors 6 2

Przykład Zainicjowanie obiektów akcelerometr, wartość zmierzona. Accelerometer accelr; SensorReadingEventArgs<AccelerometerReading> acceleration; zgłoszenie obsługi zdarzenia ReadingChanged accelr = new Accelerometer(); accelr.timebetweenupdates = TimeSpan.FromMilliseconds(20); accelr.currentvaluechanged += new EventHandler< SensorReadingEventArgs<AccelerometerReading> >(accelr_currentvaluechanged); accelr.start(); 7 Odczyt wartości Obsługa zdarzenia void accelr_currentvaluechanged(object sender, SensorReadingEventArgs<AccelerometerReading> e) acceleration = e; } Użycie wartości zmierzonych private void btnodczyt_click(object sender, RoutedEventArgs e) XText.Text = acceleration.sensorreading.acceleration.x.tostring(); YText.Text = acceleration.sensorreading.acceleration.y.tostring(); ZText.Text = acceleration.sensorreading.acceleration.z.tostring(); } 8 Akcelerometr - szczegóły Dla klasy Accelerometer: bool IsSupported czy dostępny TimeSpan TimeBetweenUpdates częstotliwość odczytu Start() / Stop() rozpoczęcie / zakończenie pomiaru Jeżeli pomiar ciągły odczyt umieścić w wątku klasa DispatcherTimer +.Interval +.Tick 9 3

Akcelerometr - szczegóły Maksymalnie 10 jednoczesnych instancji klasy jeżeli więcej - wyjątek. Właściwości State: gets; current state; SensorState enumeration. TimeBetweenUpdates: gets/sets; time between CurrentValueChanged events IsSupported (static): gets/sets; supports the accelerometer sensor. 10 Zdarzenia CurrentValueChanged gdy dostarczane nowe dane z sensora. ReadingChanged gdy dostarczane nowe dane z sensora, metoda przestarzała w bieżącym wydaniu zalecane użycie CurrentValueChanged 11 Kompas Czujnik może być wykorzystane do: określenia kąta wzgl. bieguna magnetycznego bieguna północnego, wykrycia pola magnetyczne wokół urządzenia. Kompas jest sensorem opcjonalnym wziąć pod uwagę to przy programowaniu, aplikacja powinna sprawdzić, czy jest dostępny. Dokładność wskazania maleje wymagana kalibracja akcja użytkownika można zaimplementować okno kalibracji. Nie działa na emulatorze 12 4

Inicjacja Wymagane składniki biblioteka + ns: Microsoft.Devices.Sensors Klasa Compass if (Compass.IsSupported) test dostępności pole statyczne klasy Compass Użycia - analogicznie do Accelerometr Zwraca strukturę CurrentValue typu CompasReading 5 wartości 13 Co w CurrentValue struktura public structcompassreading: ISensorReading HeadingAccuracy dokładność odczytu, MagneticHeading pozycja w stopniach, mierzona od bieguna magnetycznego ziemi w prawo, MagnetometerReading indukcja pola magnetycznego w mikroteslach, Timestamp znacznik czasu częstotliwość odczytu TrueHeading jak MagneticHeading, ale od bieguna geograficznego (deklinacja!) 14 Inne Metody Start(), Stop() początek, koniec odczytu Właściwości CurrentValue było IsDataValid gets the validity of the sensor s data, IsSupported gets whether the device is running supports the compass, TimeBetweenUpdates gets/sets time between CurrentValueChanged events 15 5

Zdarzenia Calibrate occurs when the operating system detects that the compass needs calibration. CurrentValueChanged occurs when new data arrives from the sensor, public struct CompassReading : ISensorReading 16 Przykład obiekty Compass kompas; SensorReadingEventArgs<CompassReading> odczytkompasu; inicjacja, zdarzenie kompas = new Compass(); kompas.timebetweenupdates = TimeSpan.FromMilliseconds(20); kompas.currentvaluechanged += new EventHandler<SensorReading EventArgs<CompassReading>>(kompas_CurrentValueChanged); kompas.start(); odczyt void kompas_currentvaluechanged(object sender, SensorReadingEventArgs<CompassReading> e) odczytkompasu = e; } 17 Przykład - użycie odczyt dla bieguna geograficznego do pola tekstowego odczyt dla bieguna magnetycznego do pola tekstowego private void btnodczyt_click(object sender, RoutedEventArgs e) XText.Text = "geogr: "+kompas.currentvalue.trueheading.tostring(); YText.Text = "magn.:"+kompas.currentvalue.magneticheading.tostring(); } 18 6

Orientacja i ruch urządzenia Sensory kompas, akcelerometr, żyroskop Każdy z interfejsów API czujnika zbudowana na bazie klasy SensorBase, podobne: start, stop, wyjście. Wspólne zdarzenie: CurrentValueChanged czas pomiędzy zdarzeniami: TimeBetweenUpdates wartość: SensorReadingEventArgs<typSensora> struktura specyficzna dla sensora - typsensora początek, koniec: Start(), Stop() 19 Problem z położeniem Problem (fizyczne ograniczenia) surowe dane z czujników: nie jest łatwo określić rzeczywisty kierunek i ruch urządzenia akcelerometr: ruch urządzenia + siła grawitacji żyroskop: mierzy prędkość obrotową przy zmianie położenia pojawia się zjawisko dryfu matematyka 20 Rozwiązanie sensor wirtualny Klasa API Motion kompas + czujnik przyspieszenia + matematyka + żyroskop większa dokładność 21 7

Motion API Nikt nie lubi wektorów synteza danych - kompas, gyro, akcelerometr. Klasa Motion wirtualny sensor obsługa jw. TimeBetweenUpdates, CurrentValueChanged, SensorReadingEventArgs<typSensora>, Start(), Stop(). Czy jest wspierane.issupported statyczne pole klasy Na wyjściu SensorReadingEventArgs<MotionReading> 22 Motion na wyjściu Struktura SensorReadingEventArgs<MotionReading> klasa Attitude orientacja w przestrzeni DeviceAcceleration przyśpieszenie urządzenia [g] DeviceRotationRate prędkość obrotowa urządzenia, [rad/s] Gravity (klasa Vector3) siła grawitacji (wektor) działająca na urządzenie. Timestamp częstotliwość pomiaru. 23 Orientacja w przestrzeni Klasa Attitude orientacja w przestrzeni [rad] jak w przestrzeni obrócone urządzenie Pitch Roll Yaw 24 8

GPS GPS klasyczny musi widzieć satelity (5-10) z reguły nie działa w pomieszczeniach. A-GPS (AssistedGPS) wykorzystuje Wi-Fi, serwery operatora komórk., musi być udostępniony przez operatora, skraca czas uruchomienia. A-GPS w WP wymaga System.Device oraz ns: System.Device.Location zainicjować obiekt klasy GeoCoordinateWatcher, monitorować czujnik GPS zmiana pozycji, podobnie, jak akcelerometr. 25 Przykład Aplikacja określa aktualne położenie telefonu GeoCoordinateWatcher gps wyświetla mapę z aktualnym położeniem kontrolka Map o nazwie Map <my:map x:name="map" Grid.Row="4" ZoomLevel="8" Center="54.0, 20.0" Mode="Road" CredentialsProvider= ze strony Bing Maps! " HorizontalAlignment="Stretch" VerticalAlignment="Stretch"> </my:map> 26 Przykład w kodzie Obiekty public partial class MainPage : PhoneApplicationPage GeoCoordinateWatcher gps; inicjowanie public MainPage() InitializeComponent(); gps = new GeoCoordinateWatcher(GeoPositionAccuracy.High); gps.positionchanged += new EventHandler<GeoPositionChangedEventArgs<GeoCoordinate>> (gps_positionchanged); gps.start(); 27 9

Przykład w kodzie cd. Zdarzenie zmiana pozycji void gps_positionchanged(object sender, GeoPositionChangedEventArgs<GeoCoordinate> e) if (!e.position.location.isunknown) Map.Center = e.position.location; } 28 29 30 10