Ejemplo n.º 1
0
        /**
         * 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();
                    }
                }
            }
        }
Ejemplo n.º 2
0
 /**
  * return magnetometer data mx,my,mz
  **/
 public void getMagnetometer(akCallbackData callback)
 {
     this.getMagnetometer(callback, 1000);
 }