C++ y el puerto paralelo
12 Último

C++ y el puerto paralelo

      • 1,079
      • mensajes
      • miembro desde
      • 23/03/01
    #1 C++ y el puerto paralelo

    Buenas!

    para la facultad tengo que manejar unas cositas con el puerto paralelo. Con Visual Basic ya lo domino. Pero los ejemplos de cosas complicadas que encuentro en internel estan todos con C++ y es lo que yo necesito.

    El problema es que no se con que se corren esos ejemplos que me bajo!

    Me baje el Dcc4+ o algo asi y no me funcan los ejemplos, me da errores de sentencia cuando compilo, se ve que los lenhuajes no son compatibles o algo asi, tampoco con el turbo c++ para dos.

    Alguno hizo proyectos de comunicacion con el puerto paralelo en C++?

    Es posible contar con una interfas grafica en C++?
    o sea algo tipo VB pero con codigo C

    Como hago para correr los codigos ejemplo que consigo?

    mil gracias

    saludos

  1. ¿Este tema te pareció interesante? Compártelo!

    ¿No es lo que buscabas? Intenta buscar un tema similar

    12 comentarios / 53329 Visitas

      • 545
      • mensajes
      • miembro desde
      • 09/06/02
    15/06/2002
    #2

    Si yo programe mucho de puertos en C bajo DOS. Habria que ver cuales son los errores que te tira el compilador, seria bueno que los postees. Definitivamente si en todos los ejemplos te los tira, puede que tengas algun error de configuracion de los headers, las librerias. Lo mas standar es el borland C o el Turbo C. Fijate porque se consiguen gratis en cualquier lado.

    Postea los ejemplos y los errores y te digo.

    saludos

      • 1,079
      • mensajes
      • miembro desde
      • 23/03/01
    15/06/2002
    #3

    gracias Aztor, te cuento, este es el programa
    (es para levantar datos de un conversor AD)

    Código:
    // Program to collect data from a parallel port ADC, 
    // 8-bits at a time using simple bi-dir protocol. 
    // Reading data from ADC0804LCN 
    // (NB Circuit will self-power off port!!!) 
     
    #include  
    #include  
     
    // Some (symbolic) constants... 
    const c0=1, c1=2, c2=4, c3=8; 
    const s0=1, s1=2, s2=4, s3=8; 
     
    void main() 
    { 
     // Set the port address variables etc. 
     unsigned base, data, stat, ctrl, eppdata; 
     
     base=0x278;  // 0x278 for LPT2 
                  // 0x378 for LPT1 
     
     data=base; stat=base+1; ctrl=base+2; eppdata=base+4; 
     
     unsigned char value; 
     int lc; 
     
     
     for (int sample=0; sample<3000; sample++) 
     { 
      // To read a value from the ADC... 
     
      // Initialise ADC conversion (pulse C2+, 'D' pin 16, LOW momentarily) 
      outportb(ctrl, 32); 
      outportb(ctrl, 36); 
     
      // wait until conversion complete (until S3+, 'D' pin 15, goes HIGH) 
      lc=0; do { lc++; } while (((inportb(stat) & s3)==0) && (lc!=256)); 
     
      if (lc==256) cout << "Timed out. (Hardware not connected/powered/functioning?)" << endl ; 
      else 
      { 
       outportb(ctrl, 37);  // set C0- (set 'D' pin 1 LOW), enabling ADC output 
       value=inportb(data); 
       outportb(ctrl, 36);  // unset C0- (set 'D' pin 1 HIGH), disabling ADC output 
     
       cout << "ADC value: " << (unsigned int)value << endl; 
      } 
     
      // end of ADC-read procedure 
     } 
     
    }
    El Error que me tira al compilarlo con el Dev-C++ 4 es:


    Código:
    c:\mis documentos\de pdf.cpp:10: ANSI C++ forbids declaration `c0' with no type
    c:\mis documentos\de pdf.cpp:10: ANSI C++ forbids declaration `c1' with no type
    c:\mis documentos\de pdf.cpp:10: ANSI C++ forbids declaration `c2' with no type
    c:\mis documentos\de pdf.cpp:10: ANSI C++ forbids declaration `c3' with no type
    c:\mis documentos\de pdf.cpp:11: ANSI C++ forbids declaration `s0' with no type
    c:\mis documentos\de pdf.cpp:11: ANSI C++ forbids declaration `s1' with no type
    c:\mis documentos\de pdf.cpp:11: ANSI C++ forbids declaration `s2' with no type
    c:\mis documentos\de pdf.cpp:11: ANSI C++ forbids declaration `s3' with no type
    c:\mis documentos\de pdf.cpp: In function `int main(...)':
    c:\mis documentos\de pdf.cpp:32: implicit declaration of function `int outportb(...)'
    c:\mis documentos\de pdf.cpp:36: implicit declaration of function `int inportb(...)'
    si me tira error en la fila del const se ve que es un error de sintaxis o sea que estariamos hablando de otro lenguaje por lo que entiendo, va, digo, que se yo.

    A vos te quedo algun ejempklo de lo que hacias?
    gracias!
    • PoetaCamba
      Invitado
    16/06/2002
    #4
    Código:
    // Some (symbolic) constants...
    const c0=1, c1=2, c2=4, c3=8;
    const s0=1, s1=2, s2=4, s3=8;
    PUAJ!! que asco!

    perdona el comentario, pero mejor bajate otro codigo
    porque nadie NADIE usa (o no deberia) "const"s para constantes numericas!

    el turbo c++ tiene que funcionar
    los primeros ...8 mensajes, son por la basura de los const
    reemplazalos por esto:
    Código:
    #define c0  1
    #define c1  2
    #define c2  4
    #define c3  8
    
    #define s0  1
    #define s1  2
    #define s2  4
    #define s3  8
    y despues (creo que) tenes que poner arriba de todo
    #include
    para inportb y outportb
    o estaban en stdlib.h ??

    ni idea, de ultima haces en assembler
    Código:
    asm {
      mov ax, VALOR
      out PUERTO, ax
    }
    
    asm {
      in PUERTO, ax
      mov VAR, ax
    }
    Salutes!!
    -nitram
      • 1,079
      • mensajes
      • miembro desde
      • 23/03/01
    16/06/2002
    #5

    gracias nitram!!!
    si, sabia que los primeros mensajes eran problemas de sintaxis, pero no sabia como resolverlo porque no se mucho de C, hasta php llego

    con estos dos no alcanzaria para los outportb?
    #include
    #include

    el tema es que en TurboC++ que yo tengo no estaba esa libreria (iostream) pero voy a probar con el cambio en la declaracion con la que me dijiste.

    Ahora, este assembler:
    asm {
    in PUERTO, ax
    mov VAR, ax
    }

    var es valor?
    como funciona esta? la de out la entendi, pero esta no :

    o sea no se supone que la variable destino va primero
    no querias mover el contenido del puerto al acumulador?
    o sea de ultima in ax, PUERTO?
    y despues MOV VALOR, ax?

    ojo, mi asssembler es de 8051 no se mucho por eso pregunto.

    gracias por ayudar capos

      • 1,079
      • mensajes
      • miembro desde
      • 23/03/01
    16/06/2002
    #6

    Bueno ya inclui todas las librerias habidas y por haber y el outportb me sigue tirando error:

    implicit declaration of function `int outportb(...)'

    Es algo raro, hay 50.00 ejemplos con el outportb, se ve que el quilombo es con el Dev-C++ tengo que hacer una prueba con el Borland C++ para windows, que no lo tengo y no se de donde bajarlo, si alguien me lo pasa mataria.

    mil gracias por la ayuda

    • PoetaCamba
      Invitado
    17/06/2002
    #7

    VAR seria el resultado que obtenes de un inport

    osea
    ponele que estas lineas de codigo

    Código:
       outportb(ctrl, 37);
       value=inportb(data);
       outportb(ctrl, 36);
    se traducen en
    Código:
    asm {
      push dx
    
      mov dx, ctrl
      out 37, dx
    
      push bx
      push ax
      mov bx, data
      in data, ax
      mov value, ax
      pop ax
      pop bx
    
      out 36, dx
    
      pop dx
    }
    Suertes
      • 545
      • mensajes
      • miembro desde
      • 09/06/02
    17/06/2002
    #8

    La declaracion de outportb esta en DOS.H, fijate porque quiza ese header se encuentre en otro directorio que no sea /include, dependiendo del compilador.

    • PoetaCamba
      Invitado
    17/06/2002
    #9

    Perdona, le pifie en algunas cosas =)
    outportb => out de un byte, no dos
    entonces los out/in ??, ?X
    tendrian que ser de un byte
    out/in ??, ?L
    o
    out/in ??, ?H

    Código:
    asm {
      push ax
    
      mov al, ctrl
      out 37, al
    
      push bx
      mov bx, data
      in bx, ah
      mov value, ah
      pop bx
    
      out 36, al
    
      pop ax
    }
    y te ahorras el acceso/apilado de un registro (Bah re...)
      • 135
      • mensajes
      • miembro desde
      • 06/03/02
    • ROP
      ROP está desconectado
      Baneado/a
    • Baneado
    07/08/2002
    #10

    hey eso es el bello mundo de DOS, ahora en windows NT o 2000 olvidate! esas instrucciones en assembler no andan ni en joda

12 Último