bolivia linux  
| Quienes Somos? | Notícias | Artículos | Tutoriales Manuales | Trucos y Consejos | Investigación y desarrollo | Proyectos | Eventos | Libros Electrónicos | Mirrors | Grupos Linux en Bolivia | Contactos | Inicio |
Quienes Somos?
Notícias
Artículos
Tutoriales - Manuales
Trucos y Consejos
Investigación y Desarrollo
Proyectos
Eventos
Libros Electrónicos
Mirrors
Grupos Linux en Bolivia
Contactos
bolivia linux / proyectos / letrero digital

Aplicaciones con el Puerto Paralelo de la Computadora

Planteamiento del Problema

Existe mucha piratería en el medio informático, por lo que se requiere nuevas formas de protección (se puede utilizar llaves físicas).

No se difunde la información de como podemos lograr controlar dispositivos físicos a través de una computadora, o hacer programas para lograr controlarlos o como los diferentes lenguajes de programación pueden lograr esto. Una aplicación sería:

Letrero Digital

- Sabemos que muchas empresas y negocios comerciales requieren colocar sus anuncios, pues para lo cual acuden a personas que hacen letreros y para un nuevo anuncio requieren la creación de otro letrero a parte de que estos son estáticos.

Entre los requerimientos que tienen son:
- Estos deben cambiar según transcurre el tiempo o llega un nuevo producto.
- Deben invertir en la elaboración de otro nuevo letrero cada que llega un nuevo producto o no pueden promocionar su nuevo producto por falta de letreros.

Para este proyecto, usaremos la salida de un byte del puerto paralelo del computador, y a la vez un bit de entrada. Esta será una aplicación de control de proceso, puesto que usaremos un generador de pulsos para el corrimiento de información que será desplegada en los display, y también este generador de pulsos informará a la computadora, para que esta mande otro byte por el puerto paralelo, para así lograr la rotación de caracteres a través de los displays.

Porque el uso de LINUX

Linux es software de distribución libre, que hablando en térninos económicos vendría a ser de costo 0 (cero). Es decir el software es gratis y lo único que se paga es el transporte y la superficie sobre la que viene (CDROM, etc)
Linux es utilizado por grandes empresas a nivel mundial, un ejemplo de ello es Microsoft, IBM, etc.
Linux es considerado uno de los mejores dentro del software de servidores para sitios WEB de todo el mundo y el más utilizado dentro de la RED INTERNET.

Para tal efecto utilizamos software libre y configuramos un servidor Linux. Pues este proyecto permite mostrar que un usuario, podría controlar un robot u otro periférico a travez de una computadora, con tan solo conectarse a la red Internet. Pues en nuestro caso controlamos un letrero digital por la WEB. Un ejemplo de esto es la empresa TELECEL que envia mensajes a celulares por la WEB.

Pasos siguientes

Tener un registro de todos los accesos al sitio WEB para el control del letrero Digital.
Para esto usamos una Base de Datos, donde registramos todos los mensajes que han sido enviados para ser desplegados en el sitio WEB, a parte de tener Correo eletrónico, para comunicarse con el Administrador, pues si fuera necesario habilitariamos un Chat para comunicación en línea con el administrador.

Proyecciones

Pues sabemos que internet utiliza conexión satelital por lo que sería factible, realizar trabajos desde cualquier parte del mundo, teniendo el equipo necesario
Un ejemplo sería poner a trabajar robots en lugares inaccesibles de nuestro planeta o en otros planetas
Un empresario comenzaría ya hacer publicidad con su nuevo producto, una vez que cerró su negocio en JAPON.

Esquema letrero digital

Este es un esquema de un prototipo de letrero en la cual puede ser modificado o extendido de acuerdo a la capacidad de cada implementador.

circuito letrero digital

En este esquema se ha usado un cargado en serie de registros. Que funciona de tal forma que cuando el primer display es cargado, este espera una señal "1" del reloj para copiar su contenido al siguiente display espera el nuevo dato de la CPU, esto lo hace con 1 bit de entrada de espera para luego copiar su contenido usando flip flop dato.

El programa utiliza el puerto paralelo de la computadora y este tiene 8 bits de salida, 4 de entrada y 4 de entrada y salida.

El diagrama de bloque del circuito del letrero digital usa registros conectados en serie, de la computadora salen 8 bits de acuerdo al bit de entrada el cual de la señal para mandar el otro byte.

A continuación les ofrecemos la cod
ificación en C para el letrero digital

#include<unistd.h>
#include<stdio.h>
#include<sys/io.h>
#include<sys/perm.h>
#define P 0x378
#define SR 0x379
int strip=0;
int salida(int dato)
 {i
nt x;
setuid(0);
x=ioperm(P,1,1);
x=iopl(3);
 if (x == 0)
  {
outb(dato,P);
return 1; 
  }
else return 0;
}
void display(char caracter)
{
switch (caracter)
{
 case 'a': salida(16);
 break;
 case 'b': salida(12);
 break;
 case 'c': salida(7);
 break;
 case 'd': salida(24);
 break;
 case 'e': salida(6);
 break;
 case 'f': salida(70);
 break;
 case 'g': salida(4);
 break;
 case 'h': salida(72);
 break;
 case 'i': salida(79);
 break;
 case 'j': salida(25);
 break;
 case 'k': salida(82);
 break;
 case 'l': salida(15);
 break;
 case 'm': salida(92);
salida(92);
break;
case 'n': salida(92);
break;
case 'o': salida(1);
break;
case 'p': salida(66);
break;
case 'q': salida(96);
break;
case 'r': salida(94);
break;
case 's': salida(36);
break;
case 't': salida(113);
break;
case 'u': salida(9);
break;
case 'v': salida(29);
break;
case 'w':
salida(29);
salida(29);
break;
case 'x': salida(82);
break;
case 'y': salida(40);
break;
case 'z': salida(82);
break;
case '_': salida(127);
break;
case '-': salida(126);
break;
case '0': salida(1);
break;
case '1': salida(121);
break;
case '2': salida(18);
break;
case '3': salida(48);
break;
case '4': salida(104);
break;
case '5': salida(36);
break;
case '6': salida(4);
break;
case '7': salida(113);
break;
case '8': salida(0);
break;
case '9': salida(96);
break;
}
}
int entrada()
{
int x,dato=0;
setuid(0);
x=ioperm(SR,1,1);
x=iopl(3);
if (x == 0)
{
dato = inb(SR);
return dato;
}
else
return dato;
}
void letrero(char pal[100],int dim)
{int circuito;
int sw1=0,c=0,nro=0,dato1=0,dato2=0;
int menor, mayor;
/*95 cero 127 uno*/
printf("<BR>Vea el letrero</BR>\n");
do{
if (dato1 == 0) dato1=entrada();
if (dato1 != entrada()){
   if (dato2 == 0) dato2=entrada();
break;
}
}while (1);
if (dato1 < dato2)
{ menor = dato1;
mayor = dato2;
}
if (dato1 > dato2)
{ menor=dato2;
mayor=dato1;
}
do
{
circuito=entrada();
/*printf("\n%d",circuito);*/
if (circuito == menor ){
printf("\n%d",circuito);
  if (sw1 == 0) {
  if (c == dim) {c=0;
  display('_');
  printf("<BR>Fin de secuencia</BR>\n");
  return ;
  }
  sw1=1;
  display(pal[c]);
  if (pal[c] == 'm' && nro == 0) {
  sw1=sw1+1;
  }
  if (pal[c] == 'w' && nro == 0){
  sw1++;
  }
  if (nro == 1) nro=0;
  }
}
if (circuito == mayor)
  { if (sw1 == 2) nro=1;
    if (sw1 == 1) c++;

   sw1 =0;
  }
/*printf("entramos a while");*/
}while (circuito == mayor || circuito == menor);
}
main(int argc, char *argv[])
{int longitud=0;
int i;
int ver;
int opcion;
/*char pal[100];
verifica cadena de entrada*/
while (argc > 1 && argv[1][0] == '-') {
    switch (argv[1][1]) {
    case 's':
      strip = 1;
      break;
    default:
    fprintf(stderr, "%s: no encuentra argumento %s\n",argv[0],argv[1]);
    exit(1);
       }
argc--;
argv++;
}
/*fin de verifica cadena*/
if (argc == 1){
return ;}
longitud=strlen(argv[1]);
if (argc == 2){
printf("<BR></BR>\n");
printf("<BR>Mensaje: %s de longitud: %d <BR>\n", argv[1],longitud);
printf("<BR>Correo Electronico: wsqt@eudoramail.com</BR>\n");
letrero(argv[1],longitud);
      }
return ;

}

proyectos
Letrero digital

Calificaciones por internet

Algoritmos geneticos paralelos en linux

 
| Quienes Somos? | Notícias | Artículos | Tutoriales Manuales | Trucos y Consejos | Investigación y desarrollo | Proyectos | Eventos | Libros Electrónicos | Mirrors | Grupos Linux en Bolivia | Contactos | Inicio |

La Paz - Bolivia 2002