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 -
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 -
gracias Aztor, te cuento, este es el programa
(es para levantar datos de un conversor AD)El Error que me tira al compilarlo con el Dev-C++ 4 es: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 } } 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.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(...)'
A vos te quedo algun ejempklo de lo que hacias?
gracias! - PUAJ!! que asco!Código:
// Some (symbolic) constants... const c0=1, c1=2, c2=4, c3=8; const s0=1, s1=2, s2=4, s3=8;
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:y despues (creo que) tenes que poner arriba de todoCó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
#include
para inportb y outportb
o estaban en stdlib.h ??
ni idea, de ultima haces en assemblerSalutes!!Código:asm { mov ax, VALOR out PUERTO, ax } asm { in PUERTO, ax mov VAR, ax }
-nitram -
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 -
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 -
VAR seria el resultado que obtenes de un inport
osea
ponele que estas lineas de codigose traducen enCódigo:outportb(ctrl, 37); value=inportb(data); outportb(ctrl, 36);
SuertesCó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 } -
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 ??, ?Hy te ahorras el acceso/apilado de un registro (Bah re...)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 }
