Perl contenido dinámico/es

From Qi-Hardware
Jump to: navigation, search

[edit] Habilitando contenido dinámico en Internet

ECBOT cuenta con un el hardware requerido para conectarse a Internet, y utilizando el software cherokee, para el manejo de servidores web, se pueden realizar diferentes aplicaciones web. Para la instalación del software cherokee, es importante tener en cuenta las instrucciones y precauciones necesarias, establecidas en la página principal de ECBOT. Se puede utilizar otro software para el manejo de servidores web, pero en particular se sugiere la utilización de cherokee, dado que es un servidor ligero, que no compromete el desempeño en plataformas embebidas. En general, las aplicaciones web que se desean implementar en ECBOT están relacionadas con el desarrollo de contenido dinámico. En particular, además de proveer servicios especiales en aplicaciones web, se puede requerir o desear el control de diversos periféricos del ECBOT utilizando Internet. Esto también es posible utilizando contenido dinámico, en particular scripts de CGI.

[edit] ¿Qué es CGI?

CGI son las siglas en inglés para interfaz de enlace común. Es un estándar definido para la invocación o llamado de ejecutables disponibles en un servidor web. Un servidor web puede disponer llamados a ejecutables con CGI utilizando estructuras de lenguaje interpretado o compilado, sin embargo, tradicionalmente se utilizan lenguajes interpretados como Perl, Python o PHP. Los dos primeros se recomiendan dado que son completamente compatibles con Linux, dado que fueron desarrollados para este sistema operativo. PHP puede ser bastante útil, y puede ser una opción seleccionada por diversos desarrolladores, dada su familiaridad; sin embargo, su soporte para sistemas operativos en tiempo real es limitado (En particular Angstrom). Con ayuda de CGI, utilizando un lenguaje particular, es posible desplegar contenido dinámico para aplicaciones como administración de datos, generación de reportes particulares de otras aplicaciones, y manejo de dispositivos en ECBOT. A partir de este punto supondremos que se està utilizando Perl, sin embargo, portar el desarrollo de estos contenidos es posible para otros lenguajes.

[edit] Scripts para CGI

Una vez se ha seleccionado un lenguaje de programación específico para desarrollar el contenido dinámico, se debe verificar el soporte del mismo en la plataforma ECBOT. Para Perl, es necesario disponer para instalación los paquetes perl y libperl, en la versión que se desee. Se sugiere la versión 5.8, para la cual se encuentran grandes volúmenes de material desarrollado en la red. Los scripts pueden ser desarrollados en un editor de texto para Unix; el archivo debe tener como encabezado la ruta donde se encuentra el intérprete, es decir, la ruta donde se encuentra el ejecutable perl.

$ #!/usr/bin/perl


Esto permite a la plataforma interpretar los scripts cuando se realicen llamados a través del servidor web. Dado que estos archivos residen sobre el servidor, es necesario que contengan directivas o formatos de HTML, como se verá posteriormente. Utilizando Perl, podemos leer informaciòn procedente del llamado al script, y realizar subrutinas de procesamiento de datos, como se muestra a continuación.

$ %data = &read_input;
$ sub read_input
$ {
$    local ($buffer, @pairs, $pair, $name, $value, %FORM);
$     # Read in text
$    $ENV{'REQUEST_METHOD'} =~ tr/a-z/A-Z/;
$   if ($ENV{'REQUEST_METHOD'} eq "POST")
$   {
$	read(STDIN, $buffer, $ENV{'CONTENT_LENGTH'});
$    } else
$    {
$	$buffer = $ENV{'QUERY_STRING'};
$    }
$    # Split information into name/value pairs
$    @pairs = split(/&/, $buffer);
$    foreach $pair (@pairs)
$    {
$	($name, $value) = split(/=/, $pair);
$	$value =~ tr/+/ /;
$	$value =~ s/%(..)/pack("C", hex($1))/eg;
$	$FORM{$name} = $value;
$    }
$    %FORM;
$}

En la rutina anterior, se presenta el procesamiento de información de entrada leída del formulario que realiza el llamado al script. Utilizando directivas de perl, la información de entrada es separada o clasificada para su utilización posterior. Los scripts pueden utilizar adicionalmente información de lectura de archivos particulares, para evaluación de datos y generación del contenido dinámico según se considere.

$open(PASS,"pass.txt");
$while(<PASS>)
${
$	local($nom, $val);
$	($nom, $val) = split(/=/, $_);
$	if ($nom eq "sec")
$	{
$		$sec = $val;
$    	}
$}
$close(PASS);

El anterior código permite la lectura de información particular de un archivo, para general las acciones propias del contenido dinámico. Para la generación de respuesta en el servidor web, utilizando HTML, requiere establecer el tipo de respuesta para ser interpretada por el navegador de internet utilizado para acceder al servidor.

$print "content-type: text/html \n\n";

La información completa es utilizada para realizar llamado a ejecutables en el sistema de archivos de ECBOT. En este punto se utilizan la función system, la cual es una de las directivas de perl para utilizar llamados a ejecutables. Esta función permite esperar por la respuesta o la finalización del ejecutable invocado. Alternativamente se puede utilizar la función exec.

$if($sec eq "on")
${
$	if($data{'led1'} eq "on")
$	{
$		if($data{'int1'} eq "25")
$		{
$		system ("i2c","0x10","wb4","0x10","0x33333301");
$		}
$		if($data{'int1'} eq "50")                
$                {                                                            

En el segmento de código anterior se realiza un llamado a la función i2c, que permite la comunicación con otros dispositivos a través de i2c, como el caso del ATMEGA168 en ECBOT, como se expone en otro espacio de esta wiki. Finalmente, se dispone la respuesta para el navegador web utilizado, con encabezados de HTML

$        <HTML>                                                  
$        <HEAD>                                                  
$        <TITLE>:::Cambios Efectuados:::</TITLE>                              
$        <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
$        </HEAD>                                                              
$        <BODY BGCOLOR="#000000" TEXT="#FFFFFF">                 
$	</center>                                                               
$        </BODY>                                                 
$        </HTML>                                                 
$ML

El script debe ser guardado con extensión .cgi, y debe ser almacenado en el directorio /usr/lib/cgi-bin, para que pueda ser leído o administrado por el servidor web cherokee. Los scripts de CGI y Perl permiten expandir el horizonte de aplicaciones para ECBOT, habilitando a la plataforma para el desarrollo de reconfigurabilidad de los actuadores de la plataforma a través de la red.

Personal tools
Namespaces
Variants
Actions
Navigation
interactive
Toolbox
Print/export