/** * return magnetometer data mx,my,mz **/ public void getMagnetometer(akCallbackData callback, int delay) { if (this.mpu != null && this.deviceReady == true) { for (;;) { this.setCNTL(CNTL_MODE_CONTINUE_MESURE_1); double[] data = new double[3] { 0, 0, 0 }; byte[] ReadBuf = new byte[7]; this.mpu.WriteRead(new byte[] { HXL }, ReadBuf); if (ReadBuf[6] != 0x08) { data[0] = BitConverter.ToInt16(new byte[] { ReadBuf[1], ReadBuf[0] }, 0) * mRes14bits * this.calibrationData[0]; data[1] = BitConverter.ToInt16(new byte[] { ReadBuf[3], ReadBuf[2] }, 0) * mRes14bits * this.calibrationData[1]; data[2] = BitConverter.ToInt16(new byte[] { ReadBuf[5], ReadBuf[4] }, 0) * mRes14bits * this.calibrationData[2]; callback(data); Task.Delay(delay).Wait(); } } } }
/** * return magnetometer data mx,my,mz **/ public void getMagnetometer(akCallbackData callback) { this.getMagnetometer(callback, 1000); }