USO DE LA LIBRERIA EN EL ENTORNO C.

Las funciones más relevantes en la librería LMSAPI son las siguientes:

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);
}
En el anterior código, se ha creado una conexión con el sensor a travéz del puerto COM1 y además se han enviado los parametros iniciales de configuración para el sensor. Posteriormente, se puede cambiar la configuración del sensor a través de las funciones lmsapi_config y lmsapi_set_resolution respectivamente. A continuación, se solicitarán los datos de medición del sensor dados los parámetros de configuración suministrados en el anterior fragmento de código. En primera instancia, se debe crear una estructura de datos que contendrá la información de sensado en memoria:
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);

Unversidad Manuela Beltran SICK AG Source Forge
Documento generado en  doxygen 1.5.2