Presentation is loading. Please wait.

Presentation is loading. Please wait.

Alexander Wechsler Wechsler Consulting GmbH & Co. KG SESSION CODE: WEM306.

Similar presentations


Presentation on theme: "Alexander Wechsler Wechsler Consulting GmbH & Co. KG SESSION CODE: WEM306."— Presentation transcript:

1 Alexander Wechsler Wechsler Consulting GmbH & Co. KG SESSION CODE: WEM306

2

3

4

5

6

7 UMDF Sensor Driver This is a partial diagram of the Sensor and Location Platform, showing only Sensor- related parts

8

9

10

11

12 Enumerated via category and type GUID s Category represents what is being sensed (e.g. environment, location, motion, electrical) Type represents how it is being sensed (e.g. thermometer, GPS, accelerometer, voltage) Properties Read-only (e.g. model) or read-write (e.g. report interval). Sensors may have custom properties. Data Get (sensor-specific) data report object synchronously (not recommended) or asynchronously (events) Events State change, leave (detach), data updated, custom State Is sensor working properly? Do you have access?

13 #include HRESULT hr; CComPtr pSensorManager; pSensorManager.CoCreateInstance(CLSID_SensorManager); CComPtr pALSCollection; CComPtr pALSSensor; // Get all the ALS sensors on the system pSensorManager->GetSensorsByType(SENSOR_TYPE_AMBIENT_LIGHT, &pALSCollection); hr = pSensorManager->RequestPermissions( 0, // Owner window pALSCollection, // Collection of sensors requiring permissions TRUE); // Modal flag if(SUCCEEDED(hr)) { pALSCollection->GetAt(0, &pALSSensor); }

14 STDMETHODIMP CALSEventSink::OnDataUpdated( ISensor* pSensor, ISensorDataReport* pNewData) { PROPVARIANT lightLevel; PropVariantInit(&lightLevel); // Get the sensor reading from the ISensorDataReport object pNewData->GetSensorValue(SENSOR_DATA_TYPE_LIGHT_LEVEL_LUX, &lightLevel); // Extract the float value from the PROPVARIANT object float luxValue = V_FLOAT(lightLevel); // Normalize the light sensor data double lightNormalized = ::pow(luxValue, 0.4) / 100.0; // Handle UI changes based on the normalized LUX data // which ranges from 0.0 - 1.0 for a lux range of // 0 lux to 100,000 lux, this method represents such a // handler that would be implemented in your application UpdateUI(lightNormalized); PropVariantClear(&lightLevel); return S_OK; }

15

16 The three classes retain the same roles as they had in the COM API, only wrapping properties and events

17

18

19

20 User System

21

22

23

24

25

26

27

28

29 Accelerometer3D[] sensors = SensorManager.GetSensorsByType (); Accelerometer3D a3dSensor = null; if (sensors.Length > 0) { a3dSensor = sensors[0]; SensorManager.RequestPermission(IntPtr.Zero, true, a3dSensor); }

30 a3dSensor.DataUpdated += OnDataUpdated; void OnDataUpdated(Sensor sensor, SensorDataReport dataReport) { Accelerometer3DReport a3dReport = (Accelerometer3DReport)dataReport; Console.WriteLine("X: {0} Y: {1} Z: {2}", a3dReport.AxisX_G, a3dReport.AxisY_G, a3dReport.AxisZ_G); }

31 HRESULT hr; IID civicReportIID = IID_ICivicAddressReport; CComPtr pLocation; CComPtr pReport; hr = pLocation.CoCreateInstance(CLSID_Location); hr = pLocation->RequestPermissions(0, &civicReportIID, 1, TRUE); hr = pLocation->GetReport(civicReportIID, &pReport); CComPtr pCivicAddressReport; pReport.QueryInterface (&pCivicAddressReport); BSTR str; hr = pCivicAddressReport->GetCountryRegion(&str); _tprintf(_T("Country/region: %s\n"), str); SysFreeString(str);

32

33 var provider = new CivicAddressLocationProvider(10000); LocationProvider.RequestPermissions(IntPtr.Zero, true, provider); var report = (CivicAddressLocationReport) provider.GetReport(); Console.WriteLine("Country/region: “,report.CountryOrRegion);

34

35

36

37 Required Slide Track PMs will supply the content for this slide, which will be inserted during the final scrub.

38

39

40 www.microsoft.com/teched www.microsoft.com/learning http://microsoft.com/technet http://microsoft.com/msdn

41

42 Sign up for Tech·Ed 2011 and save $500 starting June 8 – June 31 st http://northamerica.msteched.com/registration You can also register at the North America 2011 kiosk located at registration Join us in Atlanta next year

43

44


Download ppt "Alexander Wechsler Wechsler Consulting GmbH & Co. KG SESSION CODE: WEM306."

Similar presentations


Ads by Google