/// <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); }