Linux - ayuda please

   
Vista:

ayuda please

Publicado por eduardo (7 intervenciones) el 06/11/2007 16:02:00
hola, que tal, soy estudiante de mecatrónica y tengo que hacer un proyecto, el cual consta de controlar un motor a pasos mediante el puerto paralelo del pc, para esto necesito hacer un programa mediante c o c++, que ayude a poder hacerlo, lo hice en windows, pero me gustaria hacerlo mejor en linux.

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 su ayuda....
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 please

Publicado por n0str0m0 (1503 intervenciones) el 07/11/2007 13:48:40
Yo lo que no entiendo es que después de cuatro mails en el otro foro, vuelvas a postear esto mismo, sin ninguno de los cambios que te dije que eran necesarios para que eso funcione en linux... (como quitar el dos.h por ejemplo)

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 please

Publicado por eduardo (7 intervenciones) el 08/11/2007 05:07:16
sorry men, mira asi quedo el programa con tu informaciòn:

#include <stdio.h>
#include <sys/io.h>
#define direccio_pp 0x378

int main(void)
{
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 mumero de pasos deseados");
scanf("%d",&vuel);
cont=0;
in:
if(cont<vuel)
{
ioperm(direccio_pp,1,1);
cont=cont+1;
outb(1,direccio_pp);
usleep (800);
outb(2,direccio_pp);
usleep (800);
outb(4,direccio_pp);
usleep (800);
outb(8,direccio_pp);
usleep (800);
ioperm(direccio_pp,1,0);

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(direccio_pp,1,1);
cont=cont+1;
outb(8,direccio_pp);
usleep (500);
outb(4,direccio_pp);
usleep (500);
outb(2,direccio_pp);
usleep (500);
outb(1,direccio_pp);
usleep (500);
ioperm(direccio_pp,1,0);
goto com;

}
goto ini;
}

while(op==3)

{

printf("adios\n");

break;

}

return 0;
}

lo malo es que no se tarda el tiempor que deberia, por que en windows el delay era para poner el tiempo del pulso que sele enviaba a cada pin, y aqui no se que pex, pero ya corre el programa...
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 please

Publicado por n0str0m0 (1503 intervenciones) el 08/11/2007 09:42:11
Lo del tiempo de pulso no lo sé... eso supongo que lo tendrás que calcular tú de algún modo.

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 please

Publicado por RCV (1 intervención) el 14/11/2008 03:04:06
El tiempo creo que es en microsegundos amigo Eduardo. Espero haberte ayudado
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