public static MovementData CalculateGyroData(byte[] rawData, double scale = 1.0) { MovementData result = new MovementData(); result.X = BitConverter.ToUInt16(rawData, 0) * (500.0 / 65536.0) * -1 * scale; result.Y = BitConverter.ToUInt16(rawData, 2) * (500.0 / 65536.0) * scale; result.Z = BitConverter.ToUInt16(rawData, 4) * (500.0 / 65536.0) * scale; return result; }
public static MovementData CalculateMagData(byte[] rawData) { MovementData result = new MovementData(); result.X = BitConverter.ToUInt16(rawData, 12) * (2000.0 / 65536.0) * -1; result.Y = BitConverter.ToUInt16(rawData, 14) * (2000.0 / 65536.0) * -1; result.Z = BitConverter.ToUInt16(rawData, 16) * (2000.0 / 65536.0); return result; }
public static MovementData CalculateAccelerometerData(byte[] rawData) { MovementData result = new MovementData(); result.X = BitConverter.ToUInt16(rawData, 6) / 64.0; result.Y = BitConverter.ToUInt16(rawData, 8) / 64.0; result.Z = BitConverter.ToUInt16(rawData, 10) * -1 / 64.0; return result; }