Example #1
0
        /// <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));
        }
Example #2
0
        /// <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);
            }
        }
Example #3
0
        /// <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);
        }