locked
如何获取Accelerometer重力传感器的x,y,z 坐标,有没有通用的办法,如果没有 dopodo s900用什么方法得到这个信息呢 RRS feed

答案

  • 多普达 S900  就是 touch diamond吧。
    在codeplex上已经有人做了一个统一的框架,取名为Windows Mobile Unified Sensor API
    里面包含了Light Sensor,Capacitive Touch Pad和Accelerometer。
    测试的设备包含了HTC Touch *和Samsung Omnia/Instinct。
    去看看吧,应该对你有用。


    施炯
    • 已标记为答案 phoenix_zg 2009年7月10日 3:29
    2009年7月10日 2:27

全部回复

  • 多普达 S900  就是 touch diamond吧。
    在codeplex上已经有人做了一个统一的框架,取名为Windows Mobile Unified Sensor API
    里面包含了Light Sensor,Capacitive Touch Pad和Accelerometer。
    测试的设备包含了HTC Touch *和Samsung Omnia/Instinct。
    去看看吧,应该对你有用。


    施炯
    • 已标记为答案 phoenix_zg 2009年7月10日 3:29
    2009年7月10日 2:27
  • 好,我看看,谢谢版主哈
    2009年7月10日 3:05
  • 呵呵 我只是一个WM爱好者 大家有问题相互交流~
    施炯
    2009年7月10日 3:07
  • 呵呵,好的。我刚下了一个,看了下,是c#写的,他们没有c++的版本啊,而且工程打不开

    2009年7月10日 3:31
  • 恩 C#写的 可以用VS2008打开
    施炯
    2009年7月10日 4:08
  • #define SENSOR_DLL      L"HTCSensorSDK.dll"

    typedef struct _SENSORDATA
    {
     SHORT   TiltX;          // From -1000 to 1000 (about), 0 is flat
     SHORT   TiltY;          // From -1000 to 1000 (about), 0 is flat
     SHORT   TiltZ;    // From -1000 to 1000 (about) 0 = Straight up, -1000 = Flat, 1000 = Upside down
     WORD    Unknown1;       // Always zero
     DWORD   AngleY;         // From 0 to 359
     DWORD   AngleX;         // From 0 to 359
     DWORD   Unknown2;       // Bit field?
    } SENSORDATA, *PSENSORDATA;

    typedef HANDLE (WINAPI * PFN_HTCSensorOpen)(DWORD);
    typedef void (WINAPI * PFN_HTCSensorClose)(HANDLE);
    typedef DWORD (WINAPI * PFN_HTCSensorGetDataOutput)(HANDLE, PSENSORDATA);

    PFN_HTCSensorOpen           pfnHTCSensorOpen;
    PFN_HTCSensorClose          pfnHTCSensorClose;
    PFN_HTCSensorGetDataOutput  pfnHTCSensorGetDataOutput;

    #define SENSOR_TILT     1

    int getAccelerometerInfo(  )
    {
     HMODULE hSensorLib = LoadLibrary(SENSOR_DLL);
     SENSORDATA sd;
     if (hSensorLib == NULL)
     {
      return -1;
     }

     pfnHTCSensorOpen = (PFN_HTCSensorOpen)
      GetProcAddress(hSensorLib, L"HTCSensorOpen");
     pfnHTCSensorClose = (PFN_HTCSensorClose)
      GetProcAddress(hSensorLib, L"HTCSensorClose");
     pfnHTCSensorGetDataOutput = (PFN_HTCSensorGetDataOutput)
      GetProcAddress(hSensorLib, L"HTCSensorGetDataOutput");

     if (pfnHTCSensorOpen == NULL ||
      pfnHTCSensorClose == NULL ||
      pfnHTCSensorGetDataOutput == NULL)
     {
      return -1;
     }

     HANDLE g_hSensor = pfnHTCSensorOpen(SENSOR_TILT);
     pfnHTCSensorGetDataOutput(g_hSensor, &sd);
     pfnHTCSensorClose(g_hSensor);
    return = 0;

    }

    2009年7月13日 2:38
  • c++版的,供大家参考,呵呵
    2009年7月13日 2:39
  • 谢谢分享!
    施炯
    2009年7月13日 2:41
  • 呵呵,不客气.
    2009年7月13日 2:42