/// <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 range in specified units /// </summary> /// <param name="rangeUnits">Ranging units</param> /// <returns>Distance range</returns> public int GetRange(SonarRangeUnits rangeUnits) { int range = GetRangeInMicroseconds(); switch (rangeUnits) { case SonarRangeUnits.Centimeters: return((int)(range * 0.0173)); case SonarRangeUnits.Inches: return((int)(range * 0.00681)); default: return(range); } }
/// <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); }