Linux - ayuda!!

   
Vista:

ayuda!!

Publicado por eduardo (7 intervenciones) el 01/11/2007 16:48:49
hola estudio mecatrónica, y estoy haciendo un proyecto, el cual consta en controlar los pasos de un motor (a pasos obiamente), mediante un conector DB25,en el puerto paralelo del pc, el programa debe de ser en c o c++, este programa lo hice en turbo c en windows, yme funcionó, pero lo que pasa es que lo quiero hacer en linux, el programa que ocupo para compilar es el de anjuta, pero al momento de poner las líineas:

outp(0x0378,8);

delay(500);

para que me mande los pulsos al puerto paralelo, me marca error, y pss no se que hacer en ese caso, que libreria debo utilizar o como le puedo hacer para que me mande el pulso¿?

por su atención gracias...
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:ayuda!!

Publicado por n0str0m0 (1503 intervenciones) el 02/11/2007 08:58:07
¿Qué error te marca?¿Usaste ioperm como te dije?

Salu2
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:ayuda!!

Publicado por eduardo (7 intervenciones) el 02/11/2007 17:16:56
mira, asi es como lo hice en turbo c:

#include<stdio.h>

#include<conio.h>

#include<dos.h>

main()

{

int op,vuel,cont;

ini:

clrscr();

printf("elije una opci¢n\n");

printf("1.giro en sentido horario\n");

printf("2.giro en sentido antihorario\n");

printf("3.exit\n");

scanf("%d",&op);

while(op==1)

{

printf("dame el n£mero de pasos deseados\n");

scanf("%d",&vuel);

cont=0;

in:

if(cont<vuel)

{

cont=cont+1;

outp(0x0378,1);

delay(500);

outp(0x0378,2);

delay(500);

outp(0x0378,4);

delay(500);

outp(0x0378,8);

delay(500);

goto ini;

}

goto ini;

}

while(op==2)

{

printf("dame el n£mero de pasos deseados\n");

scanf("%d",&vuel);

cont=0;

com:

if(cont<vuel)

{

cont=cont+1;

outp(0x0378,8);

delay(500);

outp(0x0378,4);

delay(500);

outp(0x0378,2);

delay(500);

outp(0x0378,1);

delay(500);

goto com;

}

goto ini;

}

while(op==3)

{

printf("adios\n");

getch();

break;

}

getch();

return 0;

}

supongo que quedaria + o -, así en linux (con el programa anjuta):

#include<stdio.h>

#include<sys/io.h>

#define direccio_pp 0x378

main()

{

int op,vuel,cont;

ini:

printf("elije una opci¢n\n");

printf("1.giro en sentido horario\n");

printf("2.giro en sentido antihorario\n");

printf("3.exit\n");

scanf("%d",&op);

while(op==1)

{

printf("dame el n£mero de pasos deseados\n");

scanf("%d",&vuel);

cont=0;

in:

if(cont<vuel)

{

ioperm 0x378

cont=cont+1;

outb(0x0378,1);

delay(500);

outb(0x0378,2);

delay(500);

outb(0x0378,4);

delay(500);

outb(0x0378,8);

delay(500);

goto ini;

}

goto ini;

}

while(op==2)

{

printf("dame el n£mero de pasos deseados\n");

scanf("%d",&vuel);

cont=0;

com:

if(cont<vuel)

{

ioperm 0x0378

cont=cont+1;

outp(0x0378,8);

delay(500);

outp(0x0378,4);

delay(500);

outp(0x0378,2);

delay(500);

outp(0x0378,1);

delay(500);

goto com;

}

goto ini;

}

while(op==3)

{

printf("adios\n");

break;

}

return 0;

}

pero me marca estos errores:

in function 'int main()':
error: expected';'before numeric constant
aviso: statement es una referencia no una llamada a la funcion 'ioperm
aviso: entero grande truncado implicitamente al tipo unsigned
'delay' no se declaro en este ambito
aviso: entero grande truncado implicitamente al tipo unsigned
aviso: entero grande truncado implicitamente al tipo unsigned
aviso: entero grande truncado implicitamente al tipo unsigned
statement es una referencia, no una llamada a la funcion 'ioperm'
'outp' no se declaro en este ambito
'delay' no se declaro en este ambito

y es que al parecer no le entiendo muy bien como hacerle para correjir esto...
muchas gracias por tu ayuda....
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:ayuda!!

Publicado por n0str0m0 (1503 intervenciones) el 05/11/2007 13:19:41
Creo que no está de más que le eches un ojo a la ayuda del ioperm

man ioperm

(no sé dónde has visto o cómo has supuesto que se utiliza así)

Después de poner bien ioperm se te quitarán bastantes errores.

En linux utiliza outb, inb, etc...

man outb

En lugar de delay utiliza usleep:

man 3 usleep

Salu2
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Se me olvidaba...

Publicado por n0str0m0 (1503 intervenciones) el 05/11/2007 13:21:39
Esta pregunta estaría mejor en el foro de programación....

Salu2
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar