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

Slides:



Advertisements
Similar presentations
Steve Smith Senior Architect The Code Project SESSION CODE: DPR304.
Advertisements

Death of Security: Breached Hosts/Stolen Data/IP Espionage
Ron Jacobs Technical Evangelist Microsoft Corporation SESSION CODE: DEV207.
 Dan Polivy Lead Program Manager Microsoft Corporation PC25.
Alexander Wechsler Wechsler Consulting GmbH & CO. KG SESSION CODE: WEM201.
Jason Tolley Technical Director ROK Technology Pty Ltd SESSION CODE: WEM305.
Joe Kuemerle Lead Developer PreEmptive Solutions - SESSION CODE: DEV306.
Sometimes it is the stuff you know that hinders true progress.
Loren Goodman Chief Technology Officer InRule Technology SESSION CODE: ARC301 Putting Business Rules To Work.
The Secrets of Effective Technical Talks: How to Explain Tech without Tucking Them In! Presented by Mark Minasi and Mark Russinovich SESSION CODE: SIA334.
Ashwin Sarin Program Manager Microsoft Corporation SESSION CODE: COS204.
Maciej Pilecki Consultant, SQL Server MVP Project Botticelli Ltd. SESSION CODE: DAT403.
Olivier Bloch Technical Evangelist Microsoft Corporation SESSION CODE: WEM307.
Boris Jabes Senior Program Manager Microsoft Corporation SESSION CODE: DEV319 Scale & Productivity in Visual C
Peter Provost Sr. Program Manager Microsoft Corporation SESSION CODE: DEV403.
Douglas Boling President Boling Consulting Inc. SESSION CODE: WEM304.
Kevin Cox – SQL CAT Microsoft Corporation What are the largest SQL projects in the world? SESSION CODE: DAT305 Srik Raghavan –
END USER TOOLS AND PERFORMANCE MANAGEMENT APPS Excel PerformancePoint Svcs/ProClarity BI PLATFORM SQL Server Reporting Services SQL Server Reporting Services.
Brad Younge Principal Statera, Inc. SESSION CODE: COS304.
Janssen Jones Virtual Machine MVP Indiana University SESSION CODE: VIR403.
Bradley Millington Senior Program Manager Microsoft Corporation SESSION CODE: WEB 306.
Suhail Dutta Program Manager Microsoft Corporation SESSION CODE: DEV402.
Matt winkler program manager microsoft corporation SESSION CODE: ASI303.
Aaron Skonnard & Keith Brown Cofounders, Pluralsight SESSION CODE: ASI308 Programming AppFabric: Moving.NET to the Cloud.
Satya SK Jayanty Director & Principal Architect D BI A Solutions Peter Saddow Senior Program Manager Microsoft Corporation -SQL Server SESSION CODE: DAT312.
Thomas Deml Principal Program Manager Web Platform and Tools Microsoft Corporation SESSION CODE: WEB308.
Paul Litwin Programmer Manager Fred Hutchinson Cancer Research Center SESSION CODE: WEB206.
Jeff King Senior Program Manager, Visual Studio Microsoft Corporation SESSION CODE: WEB305.
Lori Dirks Expression Community Manager Microsoft Corporation SESSION CODE: WEB309.
Johan Arwidmark Chief Technical Architect TrueSec SESSION CODE: WEM301.
Paul Schaeflein, MCT Manager of Advanced Technologies LaSalle Consulting Partners, Inc. SESSION CODE: OSP309.
Dan Holme Director of Training & Consulting Intelliem SESSION CODE: OSP214.
Vineet Sarda Senior Consultant Microsoft Corporation SESSION CODE: WCL302.
Chris Mayo Microsoft Corporation SESSION CODE: UNC207.
Bob Beauchemin Developer Skills Partner SQLskills SESSION CODE: DAT402.
Olivier Bloch Technical Evangelist Microsoft Corporation SESSION CODE: WEM308.
Richard Campbell Co-Founder Strangeloop Networks SESSION CODE: WEB315.
Srinath Venkatasubramanian Alliance Manager Sonata Software Limited SESSION CODE: BIP203.
By: Paul D. Sheriff or SESSION CODE: DEV320.
Kate Gregory Gregory Consulting SESSION CODE: DEV316.
SESSION CODE: MGT205 Chris Harris Program Manager Microsoft Corporation.
Reza Chitsaz Senior Program Manager Microsoft Corporation SESSION CODE: DEV302 Building a SharePoint Collaboration Application in Visual Studio 2010.
Andrew Connell, MVP Developer, Instructor & Author Critical Path Training, LLC. SESSION CODE: OSP305.
Introducing Visual Studio 2010: What It Is and Why You Should Care
Pat Altimore Sr. Consultant Microsoft Corporation SESSION CODE: WCL321.
David Ollason Lead Program Manager Microsoft Corporation SESSION CODE: UNC322 The New Communicator “14” Platform.
BIO202 | Building Effective Data Visualizations and Maps with Microsoft SQL Server 2008 Reporting Services BIU08-INT | Using.
Ted Pattison Author / Instructor Critical Path Training SESSION CODE: OSP315.
Martin Woodward Program Manager Microsoft Corporation SESSION CODE: DEV308.
Don Jones Senior Partner and Technologist Concentrated Technology, LLC SESSION CODE: DAT203.
Jesus Rodriguez Chief Architect, Tellago, Inc Microsoft Architect Advisor Microsoft MVP Oracle SOA ACE SESSION CODE: DEV406.
SESSION CODE: COS301. So what do we do?
Mir Rosenberg & Refaat Issa Program Managers Microsoft Corporation SESSION CODE: WSV401.
Dustin Johnson Microsoft Practice Lead Dell, Inc. SESSION CODE: UNC302.
David A. Carley Senior SDE Microsoft Corporation SESSION CODE: DEV318.
John R. Durant Senior Product Manager Microsoft Corporation SESSION CODE: OSP313.
By: Paul D. Sheriff or SESSION CODE: WCL206.
Cube Measure Group Measure Partition Cube Dimension Dimension Attribute Attribute Relationship Hierarchy Level Cube Attribute Cube Hierarchy.
Brian A. Randell Senior Consultant MCW Technologies SESSION CODE: DEV311.
Christophe Fiessinger & Jan Kalis Senior Technical Product Manager Microsoft Corporation SESSION CODE: OSP209.
Ken Getz Senior Consultant MCW Technologies, LLC SESSION CODE: WCL202.
Andy Wigley Device Application Development MVP APPA Mundi Ltd SESSION CODE: WEM309.
Brent Ozar SQL Server Expert Quest Software SESSION CODE: DAT316.
Tobias Ternstrom Senior Program Manager Lead SQL Server Engine SESSION CODE: DAT404.
Luke Hoban Senior Program Manager Microsoft Corporation SESSION CODE: DEV307.
Richard Hundhausen President, Accentient, Inc. Visual Studio ALM MVP SESSION CODE: DEV312.
Andrew Connell, MVP Developer, Instructor & Author Critical Path Training, LLC. SESSION CODE: OSP319.
Douglas Boling President Boling Consulting Inc. SESSION CODE: WEM303.
Stephen Forte Chief Strategy Officer Telerik stephenforte.net SESSION CODE: DEV303 Building Data Driven RESTful Applications.
Windows 7 Training.
Presentation transcript:

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

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

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?

#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); }

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 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; }

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

User System

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

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); }

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);

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

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

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