Wiesemann & Theis GmbH

Tecnología de redes, sensores e interfaces para la industria, la oficina y la informática

Aplicación de pure.box:

Ejecutar programa C propio en pure.box


El siguiente ejemplo debe aportar una idea general de los pasos necesarios para compilar un texto fuente C para el sistema de destino de pure.box. Cargar el compilado en la Box y ejecutarlo cíclicamente. La función del presente programa de ejemplo consiste en cambiar el estado de conmutación de una en de un Web-IO digital en un ciclo de minutos.

pure.box permite ejecutar compilados creados para su sistema al arrancar el sistema, en tiempos definidos o bien cuando se reciben datos TCP o UDP. Soporta las bibliotecas:

  • GNU C-Lib v2.1
  • SQLite v3.6
  • OpenSSL v0.09
  • zlib v1.2

Descarga e instalación del compilador Cross

En el procesador Coldfire instalado en la pure.box trabaja un sistema operativo GNU/Linux. El compilador Cross (y documentación) necesario para esta combinación de procesador/sistema operativo puede ser descargado aquí gratis en la versión Lite para Windows y Linux. Por favor, consulte en la documentación la información relativa a la instalación en el sistema Host.

Compilar texto fuente para Windows

El texto fuente para el presente programa de ejemplo puede ser descargado aquí. El archivo incluye, además del archivo C, también el compilado para pure.box ya terminado (output_toggle).

Guarde el archivo output_toggle.c en su disco duro y abra el indicador de comandos de Windows. Navegue por el directorio en el que guardó previamente el archivo del texto fuente. El siguiente comando crea el compilado:

m68k-linux-gnu-gcc -mcpu=54450 -o output_toggle output_toggle.c

El compilador m68k-linux-gnu-gcc se abre con indicación adicional del tipo de procesador de la plataforma destino (-mcpu=54450). El archivo de objeto a crear se determina con -o output_toggle A continuación se introduce el archivo C (output_toggle.c). Si se ha ejecutado correctamente el comando encontrará el archivo del programa creado output_toggle en el mismo directorio que el texto fuente original.

Configuración de pure.box

Guarde el archivo output_toggle vía FTP o bien a través del recurso compartido SMB en la carpeta programs en la pure.box. A continuación son necesarios los siguientes pasos de configuración:

  • Entre en la página de inicio de pure.box introduciendo la dirección IP en el campo de dirección de su navegador.

    Página Web de Motherbox
  • Seleccione Registrar en los menús y regístrese a través de la ventana de diálogo abierta con su contraseña.

    Ventana de login de Motherbox
  • Navegue por la página Home >> Configuración >> Mis documentos. Dentro del listado general de archivos pulse en la carpeta programs. El archivo save_data.php está ahora visible.

    Navegador de archivos Motherbox
  • Un clic sobre el icono Editar propiedades de archivos (arriba a la izquierda output_toggle) abre la ventana de editar.

    Editar propiedades de archivos
  • Active la opción Programa. Introduzca en los parámetros de activación:

    • dirección IP del Web-IO digital
    • número del puerto HTTP
    • ciclíco para el canal a conmutar
    • si procede contraseña adjudicada

    Si no tiene ninguna contraseña adjudicada la activación podría realizarse así:
    10.40.27.10 80 5 ""

    La sucesión de los parámetros de activación es idéntica a la activación directa del programa en la consola.

    Control de sucesos
  • Active en tiempos definidos y asegúrese de que en cada uno de los campos de texto siguientes está * anotado. Conforme a esta definición de CRON el programa output_toggle será activado por minutos con los valores fijados dentro de los parámetros de activación.

    Confirme la nueva configuración con Guardar...¡Listo!

    Control de sucesos

A partir de ahora pure.box activará el Web-IO, especificado en los parámetros de activación, a través de la red. El estado de conmutación de la salida especificada cambia cada vez.

Texto fuente

En las primeras líneas se introducen los archivos Header necesarios.

#include <stdio.h>
#include <unistd.h>
#include <stdlib.h>
#include <netinet/in.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <arpa/inet.h>

El programa está formado exclusivamente por una función principal. Al principio se fijan las variables locales. Luego se editan los valores transmitidos mediante la transferencia de parámetros. Esa edición queda eliminada por el inicio cíclico a través de la pure.box, pero es muy útil durante la fase desarrollo, en la que se ejecuta el programa también a nivel local en el ordenador.

int main(int argc, char **argv) {
	int handle;
	char command[128];
	struct sockaddr_in remote;
	printf("address: %s\r\n",argv[1]);
	printf("port: %i\r\n",atoi(argv[2]));
	printf("channel: %i\r\n",atoi(argv[3]));
	printf("password: %s\r\n",argv[4]);
	...
}

A continuación se establece el comando para conmutar la salida y se guarda en las variables command.

sprintf(command, "GET /outputaccess%i?PW=%s&State=TOGGLE&\r\n", atoi(argv[3]), argv[4]);

handle soporta el socket a través del cual tiene lugar la comunicación con el Web-IO. Si no se puede crear éste se sale del programa.

handle = socket(PF_INET , SOCK_STREAM , 0);
if(socket < 0) {
	printf("Socket cannot be created\r\n");
	exit(-1);
}

Creación del punto de conexión y establecimiento de la conexión. Si se produce un error se sale del programa.

inet_aton(argv[1], &remote.sin_addr);
remote.sin_family = AF_INET;
remote.sin_port = htons(atoi(argv[2]));
if(connect(handle, (struct sockaddr *) &remote, sizeof(remote)) != 0) {
	printf("Connection cannot be established\r\n");
	exit(-1);
}

La cadena de comandos ya establecida es enviada al Web-IO a través de la conexión abierta.

if(send(handle, (const void *)command, sizeof(command), 0) == 0) {
	printf("Error at sending data\r\n");
}

Cerrar la conexión y salir correctamente del programa.

close(handle);
exit(0);

Con ello el programa queda completamente cerrado y se sale de él. Se reinicia de nuevo en el siguiente momento de ejecución desarrollándose como se ha descrito más arriba.

Resumen

Con medios sencillos pure.box puede ser aplicada como soporte de programas C y C++ propios. Esto permite realizar tareas muy complejas a través del acceso a la red y al sistema interno de archivos.


^