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....
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


0