Como base principal, todo programa que requiera utilizar LMSAPI debe incluir el archivo de cabecera "#include <lmsapi_sensor.h>", donde se encuentran los prototipos de las funciones de LMSAPI.
El segundo paso a seguir es establecer una conexión con el sensor
//Paso 0: Crear una variable de conexión LMSAPI_CONNECTION * miconexion = NULL; //Paso 1: Abrir conexión con el sensor; miconexion = lmsapi_open_terminal( 1,//Puerto COM 1 180, // width, o rango angular de 100 grados 100,// Resolución de 1 grado de circunferencia. 80,// Rango de distancias hasta de 8 metros 0 // Sin información de intensidad ); if(miconexion==0) //Tenemos un error { exit(0); }
LMSAPI_LASER_DATA * mediciones = lmsapi_laser_data_create();
Luego de esto, solicitamos la medida de distancias al sensor de la siguiente forma:
int result = lmsapi_request_measurement( miconexion, mediciones, 10.0f // Escala de distancias en centimetros ); if(result!=0) //Tenemos un error { lmsapi_laser_data_destroy(mediciones); lmsapi_close_terminal(miconexion); exit(0); }
La instrucción lmsapi_request_measurement causa un blockeo en la aplicación mientras gestiona la comunicación entre el computador y el sensor. Esto liberará al desarrollador de la ardua tarea que tendría que realizar si tuviera que gestionar la transmisión de telegramas.
Notese que se gestiona el evento de error en caso tal que la petición falle. Esto podría ocurrir por fallos en la comunicación o por el bloqueo que ejerza otra aplicación en el acceso al puerto COM. En caso de error, se tendría que gestionar la finalización de la comunicación y la liberación de la memoria de la estructura que obtendrá los datos de medición.
Una vez obenidos los datos de medición, se procederá a procesar la estructura de datos con el fin de representarlos ya sea graficamente o exportar la información a un archivo de texto:
//Ya se han obtenido las mediciones en la variable "mediciones". //A continuación se leeran los datos de las distancias en el arreglo miembro "distances", //Imprimir tabla de datos float current_angle = mediciones->min_angle; float angle_increment = mediciones->resolution; for (size_t i=0;i<mediciones->distances_count;i++) { fprintf(fp,"%f,", current_angle);//imprimir el angulo fprintf(fp,"%f\n", mediciones->distances[i]);//imprimir la distancia current_angle+=angle_increment; }
Una vez procesados los datos, se procederá a liberar los recursos asignados por LMSAPI de la siguiente forma:
//liberamos la memoria de la estructura de mediciones lmsapi_laser_data_destroy(mediciones); //Cerramos la conexion lmsapi_close_terminal(miconexion);
![]() |
![]() |
![]() |
Documento generado en
![]() |