コード例 #1
0
 /// <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;
 }
コード例 #2
0
        /// <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);
        }
コード例 #3
0
 /// <summary>
 /// Utiliza el miembro m_scale_distance para la distancia, y crea un objeto de datos del laser (LMSAPI_DATA) si la medición tuvo exito
 /// </summary>
 /// <returns>Un objeto LMSAPI_DATA con los datos de medición, o null si hubo un error</returns>
 public LMSAPI_DATA request_measurement()
 {
     IntPtr laserdata = LMSAPI_LIB.lmsapi_laser_data_create();
     if (laserdata == IntPtr.Zero) return null;// ?? fallo de memoria
     if (LMSAPI_LIB.lmsapi_request_measurement(m_handle, laserdata, m_scale_distance) == 0)
     {
         //operación exitosa
         LMSAPI_DATA newdata = new LMSAPI_DATA(laserdata);
         return newdata;
     }
     LMSAPI_LIB.lmsapi_laser_data_destroy(laserdata);
     return null;
 }
コード例 #4
0
        /// <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;
        }
コード例 #5
0
        /// <summary>
        /// Utiliza el miembro m_scale_distance para la distancia, y crea un objeto de datos del laser (LMSAPI_DATA) si la medición tuvo exito
        /// </summary>
        /// <returns>Un objeto LMSAPI_DATA con los datos de medición, o null si hubo un error</returns>
        public LMSAPI_DATA request_measurement()
        {
            IntPtr laserdata = LMSAPI_LIB.lmsapi_laser_data_create();

            if (laserdata == IntPtr.Zero)
            {
                return(null);                         // ?? fallo de memoria
            }
            if (LMSAPI_LIB.lmsapi_request_measurement(m_handle, laserdata, m_scale_distance) == 0)
            {
                //operación exitosa
                LMSAPI_DATA newdata = new LMSAPI_DATA(laserdata);
                return(newdata);
            }
            LMSAPI_LIB.lmsapi_laser_data_destroy(laserdata);
            return(null);
        }
コード例 #6
0
        /// <summary>
        /// Obtiene un objeto LMSAPI_DATA (datos de medición) con datos simulados en memoria.
        /// </summary>
        /// <param name="distance_range">Rango de distancias en Metros. Una de las constantes de distancias: 8, 80 o 150 metros respectivamente.</param>
        /// <param name="handle_intensity">Booleano con el cual se habilita la medición de distancias.</param>
        /// <param name="resolution">Resolución angular, uno de los siguientes valores: 25, 50, 100 (Cada valor es un porcentaje de grado, 1/100).</param>
        /// <param name="width">Rango angular del barrido. Los valores válidos son: 100 y 180 grados de circunferencia.</param>
        /// <param name="scale_distance">scale_distance Escala para las distancias. Configure la escala de la siguiente manera: 1.0f : Milimetros; 10.0f : Centímetros; 100.0f : Decimetros, 1000.0f : Metros</param>
        /// <returns>Un objeto LMSAPI_DATA con los datos de medición, o null si hubo un error.</returns>
        public static LMSAPI_DATA create_simulation_laser_data(
            int width, int resolution,
            int distance_range, int handle_intensity,
            float scale_distance)
        {
            IntPtr laserdata = lmsapi_laser_data_create();

            if (laserdata == IntPtr.Zero)
            {
                return(null);                         // ?? fallo de memoria
            }
            lmsapi_laser_data_simulate_values(laserdata, width, resolution, distance_range, handle_intensity, scale_distance);

            LMSAPI_DATA newdata = new LMSAPI_DATA(laserdata);

            return(newdata);
        }
コード例 #7
0
ファイル: Form1.cs プロジェクト: uplusplus/ubuntu-android-env
        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;
        }
コード例 #8
0
        /// <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;
        }
コード例 #9
0
        /// <summary>
        /// Obtiene un objeto LMSAPI_DATA (datos de medición) con datos simulados en memoria.
        /// </summary>
        /// <param name="distance_range">Rango de distancias en Metros. Una de las constantes de distancias: 8, 80 o 150 metros respectivamente.</param>
        /// <param name="handle_intensity">Booleano con el cual se habilita la medición de distancias.</param>
        /// <param name="resolution">Resolución angular, uno de los siguientes valores: 25, 50, 100 (Cada valor es un porcentaje de grado, 1/100).</param>
        /// <param name="width">Rango angular del barrido. Los valores válidos son: 100 y 180 grados de circunferencia.</param>
        /// <param name="scale_distance">scale_distance Escala para las distancias. Configure la escala de la siguiente manera: 1.0f : Milimetros; 10.0f : Centímetros; 100.0f : Decimetros, 1000.0f : Metros</param>
        /// <returns>Un objeto LMSAPI_DATA con los datos de medición, o null si hubo un error.</returns>
        public static LMSAPI_DATA create_simulation_laser_data(
            int width, int resolution,
            int distance_range, int handle_intensity,
            float scale_distance)
        {
            IntPtr laserdata = lmsapi_laser_data_create();
            if (laserdata == IntPtr.Zero) return null;// ?? fallo de memoria
            lmsapi_laser_data_simulate_values(laserdata, width, resolution, distance_range, handle_intensity, scale_distance);

            LMSAPI_DATA newdata = new LMSAPI_DATA(laserdata);
            return newdata;
        }