/// <summary>
        /// Función para iniciar un barrido de mediciones.
        /// </summary>
        /// <param name="laser_buffer">Objeto de lectura de datos</param>
        public void begin_capturing(LMSAPI_DATA laser_buffer)
        {
            // create buffer
            m_vertex_count = m_vertical_sampler_count * laser_buffer.get_distance_count();

            m_laser_distances = new float[m_vertex_count];
            m_buffer_index    = 0;

            capture_data(laser_buffer);
        }
 /// <summary>
 /// Crea un objeto de lectura de datos (LMSAPI_DATA) con datos simulados, sin
 /// necesidad de conexión con el sensor.
 /// POST: laser_data != null.
 /// </summary>
 /// <returns></returns>
 public bool simulate_laser_data()
 {
     laser_data = LMSAPI_LIB.create_simulation_laser_data(angular_range, angular_resolution, distance_range, 0, scale_distance);
     if (laser_data == null)
     {
         System.Windows.Forms.MessageBox.Show("Error al solicitar datos de mediciòn");
         return(false);
     }
     return(true);
 }
        public void request_laser_data()
        {
            int port = cbPuerto.SelectedIndex + 1;


            angular_range = 100;
            if (cbRangoAngular.SelectedIndex == 1)
            {
                angular_range = 180;
            }

            angular_resolution = 100;
            if (cbResAngular.SelectedIndex == 1)
            {
                angular_resolution = 50;
            }
            else if (cbResAngular.SelectedIndex == 2)
            {
                angular_resolution = 25;
            }

            distance_range = 8;
            if (cbRangoDistancia.SelectedIndex == 1)
            {
                distance_range = 80;
            }

            //obtenemos los datos de medición simulados

            // Conectarnos con el sensor
            LMSAPI_CONNECTION connection = LMSAPI_LIB.create_connection_object(port, angular_range, angular_resolution, distance_range, 0);

            if (connection == null)
            {
                System.Windows.Forms.MessageBox.Show("Error!!:Configuraciòn erronea del sensor, no puede establecerse conexiòn.");
                return;
            }

            connection.m_scale_distance = scale_distance;//distancias en metros

            laser_data = connection.request_measurement();
            if (laser_data == null)
            {
                System.Windows.Forms.MessageBox.Show("Error al solicitar datos de mediciòn");
                return;
            }

            //cerrar la conexion
            connection = null;
        }
        /// <summary>
        /// Llamese despues de llamar begin_capturing()
        /// </summary>
        /// <param name="laser_buffer">Objeto de lectura de datos</param>
        /// <returns>false si se ha completado el número de capturas</returns>
        public bool capture_data(LMSAPI_DATA laser_buffer)
        {
            m_current_laser_buffer = laser_buffer;
            if (m_buffer_index >= m_vertical_sampler_count)
            {
                return(false);                                            //end of measurement
            }
            uint sample_count = m_current_laser_buffer.get_distance_count();

            for (int i = 0; i < sample_count; i++)
            {
                m_laser_distances[m_buffer_index * sample_count + i] = m_current_laser_buffer.get_distance(i);
            }
            m_buffer_index++;
            return(true);
        }
        /// <summary>
        /// Obtiene datos del sensor en el objeto de lectura laser_data. Si no hay conexión
        /// entonces obtiene datos simulados.
        /// </summary>
        /// <returns></returns>
        public bool request_laser_data()
        {
            if (laser_connection == null)
            {
                return(simulate_laser_data());
            }

            laser_connection.m_scale_distance = scale_distance;//distancias en metros

            laser_data = laser_connection.request_measurement();
            if (laser_data == null)
            {
                System.Windows.Forms.MessageBox.Show("Error al solicitar datos de mediciòn");
                return(false);
            }
            return(true);
        }