# jun hirabayashi jun@hirax.net 2009.12.02 class Accelerometer require 'Win32API' attr_accessor :x attr_accessor :y attr_accessor :temperature attr_accessor :presentState def initialize begin @sensorFunctionAPI=Win32API.new("Sensor", "ShockproofGetAccelerometerData", ['P'], 'V') @buffer=' '*17 if @sensorFunctionAPI.Call(@buffer) parse(@buffer) @offsetX=-@latestRawAccelDataX.to_i; @offsetY=-@latestRawAccelDataY.to_i; end rescue 'We have some problem.' exit! end end def parse(result) @presentState,@latestRawAccelDataX,@latestRawAccelDataY,@latestAccelDataX,@atestAccelDataY,@temperature,@atestZeroG_X,@atestZeroG_Y=result.unpack("iSSSSCSS") end def getAccelerometerData @sensorFunctionAPI.Call(@buffer) parse(@buffer) @x=@latestRawAccelDataX.to_i+@offsetX.to_i; @y=@latestRawAccelDataY.to_i+@offsetY.to_i; return [@x,@y] end end =begin # sample accelerometer=Accelerometer.new 10.times{ |i| puts accelerometer.getAccelerometerData.join(',') sleep 1 } =end