C#でThinkpad加速度センサーの値をとる


C#Thinkpad加速度センサーの値をとってみるよ!

//C# code
using System;
using System.Collections.Generic;
using System.Text;
using System.Runtime.InteropServices;
using System.Threading;

namespace ThinkPadSensor
{
    class APS
    {
        [DllImport("sensor.dll")]
        public static extern void ShockproofGetAccelerometerData(ref AccData accData);

        [StructLayout(LayoutKind.Sequential)]
        public struct AccData
        {
            internal int status;
            internal short x;
            internal short y;
        }
    }
    

    class Program
    {
        const int CENTER_X = 508;
        const int CENTER_Y = 514;
        static void Main(string[] args)
        {
            APS.AccData data = new APS.AccData();
            while (true)
            {
                APS.ShockproofGetAccelerometerData(ref data);
                System.Console.WriteLine("[{0},{1},{2}]", data.x - CENTER_X, data.y - CENTER_Y, data.status);
                System.Threading.Thread.Sleep(100);
            }
        }
    }
}


ちなみにほぼ100%ここのコードです。
Thinkpad Accelerometer Data - Accessing from .NET - by Ben Suter

手元の環境用に値をXが508、Yが514を基準に丸めてますが必要に応じて調整してください。





あ、ちなみに重力デスクトップは
HDD加速度センサーではなく外部(というか有名な白いリモコンw)から取得してます -_-
HDD加速度センサーのほうが夢があるからHDD加速度センサーってことにしておこうかと思ったけどそろそろネタばれさせておきます


C#久しぶりにさわったw