/// <summary> /// Returns range in specified units /// </summary> /// <param name="rangeUnits">Ranging units</param> /// <returns>Distance range</returns> public int GetRange(SonarRangeUnits rangeUnits) { byte command; // Set command by range units switch (rangeUnits) { case SonarRangeUnits.Centimeters: command = SRF02Sonar.RANGE_IN_CENTIMETERS; break; case SonarRangeUnits.Inches: command = SRF02Sonar.RANGE_IN_INCHES; break; default: command = SRF02Sonar.RANGE_IN_MICROSECONDS; break; } // Write command _slave.WriteRegister(0, command); // Wait for a while Thread.Sleep(40); // Read range _slave.ReadRegister(2, _dataBuffer); this._autotuneMinimum = (int)Endianity.GetValue(_dataBuffer, 2, 2, ByteOrder.BigEndian); return((int)Endianity.GetValue(_dataBuffer, 0, 2, ByteOrder.BigEndian)); }
/// <summary> /// Returns actual azimuth /// </summary> /// <returns>Azimuth</returns> public float GetAzimuth() { _slave.ReadRegister(CMPS03Compass.REG_AZIMUTH_HIGH, _dataBuffer); return(Endianity.GetValue(_dataBuffer, ByteOrder.BigEndian) / 10f); }