Tudd Intuíció, előadás, az érzékelők és a szolgáltatás

Érzékelők és szolgáltatások

A cél az előadás, hogy megtanulják, hogyan kell dolgozni a koordinátákat, gyorsulásmérő. kártyák és egyéb, a szolgáltatások, és az érzékelők.

Windows Phone 7 készülék csak néhány hardver jellemzői - nevezik érzékelők -, és néhány szoftver szolgáltatások, esetleg hardveres támogatás. Tekintsük azokat, amelyek a legérdekesebb a fejlesztők számára:

gyorsulásmérő

A kimenet a gyorsulásmérő kényelmesen képviseli formájában háromdimenziós vektor. Jellemzően a vektorokat vastag betűvel vannak szedve, így a gyorsulás vektor lehet a következőképpen jelöljük :. Az XNA a típusú háromdimenziós vektor. Silverlight ott.

Mivel három koordinátáját pontosan meghatározzuk egy térbeli pontban, a vektor képviseli irányát és nagyságát. Nyilvánvaló, hogy a pont és vektor összefüggenek. vektor iránya - egy sugár pontról pontra. De a vektor nem vágja. és az összekötő. Ez a tendencia ebben a szegmensben.

Kiszámításához vektor modul használt háromdimenziós alakja a Pitagorasz-tétel:

Tudd Intuíció, előadás, az érzékelők és a szolgáltatás


Ábra. 8.1. A háromdimenziós koordinátarendszer

Ez egy hagyományos háromdimenziós koordinátarendszerben. is használt létrehozása 3D-grafika XNA. Ezt hívják jobbkezes koordinátarendszerben. Helyezze a mutatóujját a jobb kéz mentén pozitív irányba, a középső ujj - végig a pozitív irányba, és a hüvelykujj fog mutatni a pozitív irányba.

A szabadesés gyorsulásvektor egység elméletileg kell általában nulla.

Ahhoz, hogy működjön együtt a gyorsulásmérő használják Microsoft.Devices.Sensors könyvtár és névtér Microsoft.Devices.Sensors. A WMAppManifest.xml fájlt, akkor meg kell határozni:

Ez az alapértelmezett.

Az alkalmazás létrehoz egy példánya a gyorsulásmérő (gyorsulásmérő), egy eseménykezelő ReadingChanging (Change mérés) és az úgynevezett Start metódus.

Tekintsük SilverlightAccelerometer projekt. projektben. amely arra szorítkozik, hogy a kijelző az aktuális mérési. Központú TextBlock leírt XAML fájlt.

Silverlight projekt: SilverlightAccelerometer fájlt. Főoldal. XAML (fragmentum)

Hozzáadni Microsoft.Devices.Sensors könyvtár a projekt köteles:

  1. kattintson jobb gombbal a SilverlightAccelerometer / Referenciák csomópont a Solution Explorer és válassza az Add Reference. A .NET párbeszédablakban válassza ki a könyvtár kiválasztásához Microsoft.Devices.Sensors és kattintson az OK gombra;

Tudd Intuíció, előadás, az érzékelők és a szolgáltatás


Ábra. 8.2. Hozzáadása Microsoft.Devices.Sensors könyvtár

  • adjunk hozzá egy vonalat Microsoft.Devices.Sensors; a MainPage.xaml.cs
  • Ez az alkalmazás biztosítja a kijelző vektor gyorsulásmérő során minden alkalommal annak végrehajtását, így teremt gyorsulásmérő osztály és hívja a Start eljárás zajlik a kivitelező:

    Silverlight projekt: SilverlightAccelerometer fájlt. Főoldal. XAML .cs ​​(fragmens)

    A dokumentáció figyelmeztet, hogy a hívás indításához vezethet a kialakulásához kivétel, így az alkalmazás megvédi magát ettől. Gyorsulásmérő osztály is támogatja módszerek Stop (Stop) és megsemmisíteni (Törlés), de a program nem használja azokat. Ahhoz, hogy információkhoz jussanak a a gyorsulásmérő és az állam nyújtott állami tulajdon.

    ReadingChanged esemény biztosít osztályok érvek AccelerometerReadingEventArgs eseményeket. Ez az objektum tulajdonságai és egy dupla, és az ingatlan TimeStamp típusú DateTimeOffset (DateTime Offset). Melléklet SilverlightAccelerometer eseménykezelő feladata -, hogy formázza az adatokat egy húr, és állítsa be az értéket a szöveg TextBlock objektumot.

    A fogás az, hogy az eseménykezelő (ebben az esetben OnAccelerometerReadingChanged (cseréjénél gyorsulásmérő)) nevezzük egy másik végrehajtási szál. Ez azt jelenti, hogy kell kezelni egy speciális módon.

    Egy kis elmélet. Létrehozása és hozzáférést biztosít az összes objektum és a felhasználói felület az alkalmazás Silverlight fut a fő végrehajtása, ami gyakran nevezik a UI szál, vagy egy UI-szál. Ezek a felhasználói felület objektumok nincsenek szálbiztosak; számukra nem biztosított egyidejű hozzáférést több szál. Ezért Silverlight nem teszi lehetővé a hozzáférést a felhasználói felület objektum egy patak nem UI-patak.

    Ez azt jelenti, hogy OnAccelerometerReadingChanged módszer közvetlenül nem alkalmazható a TextBlock elem meg az új értéket a Text tulajdonság.

    Szerencsére System.Windows.Threading névtér leírt osztály diszpécser (diszpécser), amely megoldást nyújt erre a problémára. Miután diszpécser osztály hozzárendelések lehet irányítani a adatfolyam nem egy UI-áramlás a sorban. amely később kerül feldolgozásra UI-szál. Ez úgy hangzik, elég bonyolult, de a szempontból a fejlesztő nagyon egyszerű, mert ezek a feladatok formájában egyszerű módszer hívások.

    Diszpécser fokon már rendelkezésre áll. Class DependencyObject (függőség) leírja a típusú ingatlanok diszpécser diszpécser. és sok örökölt DependencyObject osztály Silverlight. Minden esetben ezeknek az osztályoknak, akkor lehet dolgozni az áramlás nem UI-flow, mert mind tulajdonságokkal diszpécser. Bármelyik osztályából származó DependencyObject létre UI-áramban lehet bármilyen tárgy diszpécser. Ezek mind egyformák.

    Diszpécser osztály definiálja CheckAccess módszer (Check-hozzáférés), amely igaz értékkel tér vissza. ha az aktuális szál fér hozzá egy adott elem a felhasználói felület. (CheckAccess módszer is duplikált a DependencyObject.) Olyan esetekben, amikor a hozzáférés az objektum az aktuális szál nem lehetséges, a diszpécser biztosít két változata a módszerrel Invoke (Call), amelyben az Ön által küldött munkahelyek UI-patak.

    A projekt SilverlightAccelerometer változata a kód, alapos szempontjából szintaxis.

    A kibővített változata, meg kell delegálni, és az eljárás ilyen küldöttet. Küldött (és módszer) nem szabad, hogy a visszatérési értéket, de meg kell, hogy ilyen sok érv, hogy elegendő lesz a feladat elvégzéséhez. Ebben az esetben a referencia vonal átadó az ingatlan értékét szöveg TextBlock objektumot.

    Projekt: SilverlightAccelerometer fájlt. Főoldal. XAML .cs ​​(fragmens)

    OnAccelerometerReadingChanged felelős hívó SetTextBlockText (Ask a szöveg szöveg blokk). Először használja CheckAccess. annak meghatározására, hogy a hívás SetTextBlockText módszerrel közvetlenül. Ha ez nem lehetséges, akkor a kezelő meghívja BeginInvoke módszer (Trigger hívás). Az első érv küldöttje például SetTextBlockText módszer. Követi az összes szükséges SetTextBlockText érvek:

    Projekt: SilverlightAccelerometer fájlt. Főoldal. XAML .cs ​​(fragmens)

    Ez nem egy rossz lehetőség, de szükség ugrani patak patak járó alkalmazásának egy további eljárást és küldötte.

    Tudd Intuíció, előadás, az érzékelők és a szolgáltatás


    Ábra. 8.3. A program eredményeként

    Kapcsolódó cikkek