elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Únete al Grupo Steam elhacker.NET


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  Ayuda con C y el Paralelo *Linux*
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Ayuda con C y el Paralelo *Linux*  (Leído 1,755 veces)
dgg006

Desconectado Desconectado

Mensajes: 20


Ver Perfil
Ayuda con C y el Paralelo *Linux*
« en: 4 Junio 2011, 17:24 pm »

Hola, sigo con este proyecto que me va a sacar canas verdes  :P
 La cosa es asi, tengo este codigo:
Código:
#include <stdio.h>
#include <stdlib.h>
#include <sys/io.h>
#define puerto 0x378

int main ()
{
    int resul;
    int estado=-1;
    int infinito=0;

    FILE *texto;
    texto = fopen ("Cocina.txt","r");
    fscanf (texto, "%d",&resul);
    fclose (texto);

    while (infinito == 0)
    {
        switch (resul)
        {
            case 0:
            texto = fopen ("Cocina.txt","r");
            fscanf (texto, "%d",&resul);
            fclose (texto);
            if (estado != 0)
            {
                unsigned int p; // en esta variable le decimos, en hexa, cuantos cuantos leds prenderan

//apertura del puerto
if(ioperm(puerto,1,1))
{
perror("Se ha encontrado el siguiente error: "); //manejo de errores
exit(1); //salida con error
}

p = 0x00; //puerto 0. Apaga todos los bits
outb(p,puerto);
            }
                    estado=0;
                    break;
            case 1:
            texto = fopen ("Cocina.txt","r");
            fscanf (texto, "%d",&resul);
            fclose (texto);
            if (estado != 1)
            {
                unsigned int p; // en esta variable le decimos, en hexa, cuantos cuantos leds prenderan

//apertura del puerto
if(ioperm(puerto,1,1))
{
perror("Se ha encontrado el siguiente error: "); //manejo de errores
exit(1); //salida con error
}

p = 0x01; //puerto 1
outb(p,puerto); //envia el valor en binario al puerto
            }
                    estado=1;
                    break;
        }
    }
}
Lo que hace es leer un TXT llamado Cocina, si dentro hay un 1, enciende el pin 2 del paralelo, si hay un 0, lo apaga.
Para esto funciona, pero cual es el problema?, La cosa es que va a haber mas de un TXT, y tiene que controlar cada pin de forma independiente, ej: Si esta la cocina encendida, y quiero encender la habitacion, o que esten las 2 encendidas y quiero apagar una.
Buscando en internet, encontre este otro codigo:
Código:
#include<stdio.h>
#include<stdlib.h>
#include<sys/io.h> //esta librería permite el manejo de puertos en linux con lenguaje C
#define puerto 0x378 //definimos el puerto a utilizar

int main (void)
{
  int seleccion,seleccion_sal,salida[8],valor_sal=0,i,k;
  for(i=0;i<=8;i++)
    salida[i]=0;

  i=0;
  while(seleccion!=4)
  {
      printf("nSeleccione la opcion deseada:nt1- Activar salidant2- Desactivar salidant3- Estado de salidasnt4- Salirn Seleccion: ");
      scanf("%d",&seleccion);
      printf("Usted selecciono la opcion %i n",seleccion);
      switch(seleccion)
      {
        case 1:
            valor_sal=0;
            printf("Seleccione la salida a Activar (0 para cancelar): ");
            scanf("%d",&seleccion_sal);
            if(seleccion_sal==0)
                break;
            if(seleccion_sal<0 || seleccion_sal>8)
            {
                printf("tLa salida seleccionada no existe");
                break;
            }
            salida[seleccion_sal-1]=1;
            i=1;
            for(k=0;k<8;k++)
            {
                printf("t %d",i);
                if (salida[k]==1)
                    valor_sal = valor_sal + i;
                i=i*2;
            }
            ioperm(0x0378,1,1);
            outb(valor_sal,0x0378);
            printf("nEl valor de Salida es: %i",valor_sal);
            break;
        case 2:
            valor_sal=0;
            printf("Seleccione la salida a Desactivar:");
            scanf("%d",&seleccion_sal);
            if(seleccion_sal<1 || seleccion_sal>8)
            {
                printf("tLa salida seleccionada no existe");
                break;
            }
            salida[seleccion_sal-1]=0;
            i=1;
            for(k=0;k<8;k++)
            {
                printf("t %d",i);
                if (salida[k]==1)
                    valor_sal = valor_sal + i;
                i=i*2;
            }

            ioperm(0x0378,1,1);
            outb(valor_sal,0x0378);
            printf("nEl valor de Salida es: %i",valor_sal);
            break;
        case 3:
            printf("n%d",valor_sal);
            for(i=0;i<8;i++)
            {
                printf("nEstado de salida %i: ",(i+1));
                if (salida[i]==1)
                    printf("Activada");
                if (salida[i]==0)
                    printf("Desactivada");
             }
            printf("n");
            break;
        case 4:
            break;
        default:
            printf("Seleccion Invalidan");
            break;
      }
 }
 exit(0);
}
De una forma, este hace algo de lo que quiero, y tengo que lograr entender lo que hace para poder juntarlo con mi codigo.
Talves es algo basico, pero no tengo nada de experiencia en programacion, de verdad que necesito una ayuda.
Desde ya Gracias!!


En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Ayuda nesecito un diagrama de cable paralelo macho a cable utp rj45
Electrónica
baskodj 0 3,092 Último mensaje 28 Enero 2005, 06:07 am
por baskodj
ayuda con el puerto paralelo
Programación Visual Basic
rodri123 1 1,757 Último mensaje 15 Agosto 2005, 15:52 pm
por BenRu
Ayuda, leer datos desde el puerto paralelo
Electrónica
Monkito 0 2,460 Último mensaje 30 Diciembre 2005, 23:37 pm
por Monkito
Puerto paralelo Linux y MAC OS.
Programación General
Meta 0 4,063 Último mensaje 1 Junio 2010, 09:28 am
por Meta
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines