Данни от жироскоп и акселерометър от Windows?

Microsoft Surface Pro има жироскоп и акселерометър, Windows 8 и пълната .NET рамка.

Повечето статии, които намирам, които говорят за API за движение, сочат към API на Windows Phone 8.

Какви пространства от имена и класове на .NET Framework трябва да използвам, за да получа данни от жироскоп и акселерометър?


person Jim    schedule 12.08.2014    source източник
comment
Бъдете по-ясни. Искате ли го за приложение в магазина или за обикновено приложение (в стил Win 7)?   -  person Henk Holterman    schedule 12.08.2014
comment
Искам обикновено .NET приложение, в идеалния случай. Ще разположа приложението на Microsoft Surface Pro чрез USB устройство. Не планирам да внедрявам това приложение в Windows Store или където и да е другаде.   -  person Jim    schedule 13.08.2014


Отговори (2)


Току-що работих въз основа на документацията - http://msdn.microsoft.com/en-us/library/ie/windows.devices.sensors

using Windows.Devices.Sensors;

private Accelerometer _accelerometer;

private void DoStuffWithAccel()
{
   _accelerometer = Accelerometer.GetDefault();
   if (_accelerometer != null)
   {
      AccelerometerReading reading = _accelerometer.GetCurrentReading();
      if (reading != null)
      double xreading = reading.AccelerationX;
      ... etc.
   }
}

Не съм го тествал, но трябва да работи за всяко приложение на Windows Store - Ако се опитвате да го накарате да работи като приложение за конзола/windows forms, трябва да промените целевата платформа чрез:

  1. Щракнете с десния бутон върху вашия проект -> Разтоварване на проекта
  2. Следвайте останалата част от този https://software.intel.com/en-us/articles/using-winrt-apis-from-desktop-applications
person Levi Fuller    schedule 12.08.2014
comment
Благодаря - връзката към статията на Intel беше особено полезна. - person Jim; 13.08.2014

За повърхностния професионалист трябва да използвате библиотеката Windows 8.1 вместо библиотеката Windows Phone 8.1.

Трябва да е в същото пространство от имена Windows.Devices.Sensors.

using Windows.Devices.Sensors;
...
//if you aren't already doing so, and you want the default sensor
private void Init()
{
    _accelerometer = Accelerometer.GetDefault();   
    _gyrometer = Gyrometer.GetDefault();
}
...
private void DisplayAccelReading(object sender, object args)
{
    AccelerometerReading reading = _accelerometer.GetCurrentReading();
    if (reading == null)
        return;

    ScenarioOutput_X.Text = String.Format("{0,5:0.00}", reading.AccelerationX);
    ScenarioOutput_Y.Text = String.Format("{0,5:0.00}", reading.AccelerationY);
    ScenarioOutput_Z.Text = String.Format("{0,5:0.00}", reading.AccelerationZ);
}
...
private void DisplayGyroReading(object sender, object args)
{
    GyrometerReading reading = _gyrometer.GetCurrentReading();
    if (reading == null)
        return;

    ScenarioOutput_AngVelX.Text = 
                  String.Format("{0,5:0.00}", reading.AngularVelocityX);
    ScenarioOutput_AngVelY.Text = 
                  String.Format("{0,5:0.00}", reading.AngularVelocityY);
    ScenarioOutput_AngVelZ.Text = 
                  String.Format("{0,5:0.00}", reading.AngularVelocityZ);
}
person wbennett    schedule 12.08.2014
comment
Не забравяйте да извикате [Sensor].GetDefault(), за да намерите първо сензора. - person Levi Fuller; 12.08.2014
comment
Предполагам, че тъй като той работи за Windows Phone, той вече прави това. - person wbennett; 12.08.2014
comment
@wbennett Първоначалният ми пост вероятно не беше ясен. Нямам работещо приложение за телефон. Тъкмо започвам да работя със Surface Pro и съм объркан откъде да започна. - person Jim; 13.08.2014
comment
@Jim Имате ли инсталиран SDK? Това е добра отправна точка: code.msdn.microsoft.com/windowsapps / - person wbennett; 13.08.2014
comment
@wbennett - OP не иска приложение за телефон или таблет. Ето защо се съмнявам в отговора ти. Прочетете другия. - person Henk Holterman; 13.08.2014
comment
Това е ултрабук, маскиран като таблет. - person Henk Holterman; 13.08.2014
comment
@HenkHolterman Прочетох другия отговор и разглеждам препратките от примерния проект, който използвах, за да стартирам на повърхностен професионалист ( code.msdn.microsoft.com/windowsapps/ ) справката за Windows 8.1 е аналогична на RT и десктоп. Може би това е различно за Windows 8, с устройство, работещо с 8 RT (базирано на ръка)? Като странична бележка, от менюто със свойства се показва като SDK, а не като действителна dll (в допълнение към препратката .NET for Windows Store apps). - person wbennett; 13.08.2014