Ejemplo n.º 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));
        }
Ejemplo n.º 2
0
        /// <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);
        }