GRACIAS.
Estoy desarrollando un control en la PC para el puerto paralelo. Utilizando Perl voy a sacar datos por el puerto paralelo. Estoy usando los siguientes módulos:
Time::HiRes para temporizadores,
ParallelPort:: utilizando el driver ::ParallelPort::drv::linux para Linux.
Este proyecto lo desarrollé utilizando Windows Apache + Perl. Ahora lo quiero utilizar en Ubuntu Server. Al correr el script para sacar todos los datos me manda el error 500.
Revisé el log y aparece esto:
- Código: Seleccionar todo
[Tue May 26 12:21:07 2009] [error] [client 127.0.0.1] (2)No existe el fichero \xc3\xb3 directorio: exec of '/opt/lampp/cgi-bin/conectatodo.cgi' failed
[Tue May 26 12:21:07 2009] [error] [client 127.0.0.1] Premature end of script headers: conectatodo.cgi
El \xc3\xb3 es por que principia un carácter UTF8, ¿no?
El código es el siguiente: conectatodo.cgi
Using perl Syntax Highlighting
#!/bin/perl -w
print "content-type: text/html\n\n";
use integer;
use CGI ':standard';
use Device::ParallelPort;
use Device::ParallelPort::drv::linux;
my $port = Device::ParallelPort->new( );
#Llamada a librería de subrutinas
require 'entorno2.lib';
#LLama a la subrutina "registro" para enviar el dato al octeto.
registro(0,255);
registro(2,15);
exit(1);
print "content-type: text/html\n\n";
use integer;
use CGI ':standard';
use Device::ParallelPort;
use Device::ParallelPort::drv::linux;
my $port = Device::ParallelPort->new( );
#Llamada a librería de subrutinas
require 'entorno2.lib';
#LLama a la subrutina "registro" para enviar el dato al octeto.
registro(0,255);
registro(2,15);
exit(1);
Coloreado en 0.002 segundos, usando GeSHi 1.0.8.4
La librería entorno2 es la siguiente:
Using perl Syntax Highlighting
use Time::HiRes qw( usleep );
use Device::ParallelPort;
use Device::ParallelPort::drv::linux;
my $port = Device::ParallelPort->new();
my $dato1;
#Zona de subrutinas
#Subrutinas para salidas
#$_[0],$_[1],$_[2], etc.. son los argumentos para pasar parámetros a las Subrutinas
sub registro {
$port->set_byte ($_[0], chr($_[1]));
}
sub conecta {
$port->set_bit($_[0],1); # $_[0] es el argumento de entrada para la subritina. En este caso es el número de bit de la salida de la contorladora.
print "<p>Salida <b>$_[0] On</b>\n";
}
sub apaga {
$port->set_bit($_[0],0);
print "<p>Salida <b>$_[0] Off</b>\n";
}
sub apagatodo {
$port->set_byte (0, chr(0));
$port->set_byte (2, chr(0));
}
sub enciendetodo {
$port->set_byte (0, chr(255));
}
#Si se pulsa la entrada1, escribe Off en el archivo
sub in1_0ff{
if ($entrada1==0) {
$dato1=Off;
open (BANDERA1, ">bandera1.txt");
print BANDERA1 $dato1;
close BANDERA1;
}
}
#Si se pulsa la entrada2, escribe Off en el archivo
sub in2_0ff{
if ($entrada2==0) {
$dato2=Off;
open (BANDERA2, ">bandera2.txt");
print BANDERA2 $dato2;
close BANDERA2;
}
}
#Si se pulsa la entrada2, escribe Off en el archivo
sub in3_0ff{
if ($entrada2==0){
$dato3=Off;
open (BANDERA3, ">bandera3.txt");
print BANDERA3 $dato3;
close BANDERA3;
}
}
#Subrutina para entradas
sub entradas {
$entrada1=$port->get_bit(11); #Carga el valor de la primera entrada en la variable
$entrada2=$port->get_bit(12); #Carga el valor de la segunda entrada en la variable
$entrada3=$port->get_bit(13);
$entrada4=$port->get_bit(14);
$entrada5=$port->get_bit(15);
}
1;
use Device::ParallelPort;
use Device::ParallelPort::drv::linux;
my $port = Device::ParallelPort->new();
my $dato1;
#Zona de subrutinas
#Subrutinas para salidas
#$_[0],$_[1],$_[2], etc.. son los argumentos para pasar parámetros a las Subrutinas
sub registro {
$port->set_byte ($_[0], chr($_[1]));
}
sub conecta {
$port->set_bit($_[0],1); # $_[0] es el argumento de entrada para la subritina. En este caso es el número de bit de la salida de la contorladora.
print "<p>Salida <b>$_[0] On</b>\n";
}
sub apaga {
$port->set_bit($_[0],0);
print "<p>Salida <b>$_[0] Off</b>\n";
}
sub apagatodo {
$port->set_byte (0, chr(0));
$port->set_byte (2, chr(0));
}
sub enciendetodo {
$port->set_byte (0, chr(255));
}
#Si se pulsa la entrada1, escribe Off en el archivo
sub in1_0ff{
if ($entrada1==0) {
$dato1=Off;
open (BANDERA1, ">bandera1.txt");
print BANDERA1 $dato1;
close BANDERA1;
}
}
#Si se pulsa la entrada2, escribe Off en el archivo
sub in2_0ff{
if ($entrada2==0) {
$dato2=Off;
open (BANDERA2, ">bandera2.txt");
print BANDERA2 $dato2;
close BANDERA2;
}
}
#Si se pulsa la entrada2, escribe Off en el archivo
sub in3_0ff{
if ($entrada2==0){
$dato3=Off;
open (BANDERA3, ">bandera3.txt");
print BANDERA3 $dato3;
close BANDERA3;
}
}
#Subrutina para entradas
sub entradas {
$entrada1=$port->get_bit(11); #Carga el valor de la primera entrada en la variable
$entrada2=$port->get_bit(12); #Carga el valor de la segunda entrada en la variable
$entrada3=$port->get_bit(13);
$entrada4=$port->get_bit(14);
$entrada5=$port->get_bit(15);
}
1;
Coloreado en 0.002 segundos, usando GeSHi 1.0.8.4
De antemano, gracias, y espero puedan ayudarme, porque no doy nada más con el error.
Saludos desde Mexico , San Luis Potosi