• Domingo 19 de Mayo de 2024, 08:13

Autor Tema:  Velocidad variable de acceso al LPT  (Leído 1205 veces)

shadowpucci

  • Nuevo Miembro
  • *
  • Mensajes: 8
  • Nacionalidad: ar
    • Ver Perfil
Velocidad variable de acceso al LPT
« en: Lunes 1 de Junio de 2009, 16:51 »
0
Buenas, vengo con una consultita sobre un problema que tengo con el LPT

Resulta que yo tengo un dispositivo en el cual mediante LPT envio datos a un hardware (mueve un carro de impresora conectado directamente al puerto LPT con su drive de potencia). Para probar dicho harware arme un programa muy sencillo el cual me da una secuencia de datos. Entre medio de los datos, para meter espacios de tiempo, use la funcion delay(tiempo) y tiempo=1, y resulta que los datos, no solo salen MUCHO mas espaciados que con 1ms, sino que incluso lo hace con una cadencia variable (varia la velocidad con la que se muestran los datos en el puerto)

El programa es el siguiente:

Código: C
  1. //Moviendo el carro en funcion del teclado
  2.  
  3. #include <stdio.h>
  4. #include <conio.h>
  5. #include <dos.h>
  6. #define base 0x378
  7. #define tiempo 1
  8.  
  9. void main()
  10. {
  11.  int a;
  12.  int b;
  13.  
  14.  clrscr();
  15.  printf("Ingrese la Direccion del movimiento (I o D)");
  16.  outportb(base+2, inport(base+2)&0xDF);//por si el puerto esta bidireccional
  17.  do {
  18.     while(getch()=='d'){
  19.         printf("n ingrese la cantidad de steps=");
  20.         scanf("%d",&a);
  21.         for(b=0;b<a;b++){
  22.             outportb(base,0x01);
  23.             delay(tiempo);
  24.             outportb(base,0x03);
  25.             delay(tiempo);
  26.             outportb(base,0x02);
  27.             delay(tiempo);
  28.             outportb(base,0x06);
  29.             delay(tiempo);
  30.             outportb(base,0x04);
  31.             delay(tiempo);
  32.             outportb(base,0x0C);
  33.             delay(tiempo);
  34.             outportb(base,0x08);
  35.             delay(tiempo);
  36.             outportb(base,0x09);
  37.             delay(tiempo);}
  38.         printf("ok");
  39.         outportb(base,0x00);
  40.     }
  41.     while(getch()=='i'){
  42.         printf("n ingrese la cantidad de steps=");
  43.         scanf("%d",&a);
  44.         for(b=0;b<a;b++){
  45.             outportb(base,0x08);
  46.             delay(tiempo);
  47.             outportb(base,0x0C);
  48.             delay(tiempo);
  49.             outportb(base,0x04);
  50.             delay(tiempo);
  51.             outportb(base,0x06);
  52.             delay(tiempo);
  53.             outportb(base,0x02);
  54.             delay(tiempo);
  55.             outportb(base,0x03);
  56.             delay(tiempo);
  57.             outportb(base,0x01);
  58.             delay(tiempo);}
  59.             outportb(base,0x09);
  60.             delay(tiempo);
  61.         printf("ok");
  62.         outportb(base,0x00);
  63.     }
  64.   }while (getch()!='q');
  65. }
  66.        
  67.  


El programa esta hecho en borlad C corriendo en un PC con Windows XP... Puede que el XP tenga algo que ver en esto?? o es un tema del compilador?? p de la funcion delay(tiempo)??

Valga aclarar que esto no es el programa final... es tan solo algo para probar el hard, por eso esta asi tan rustico

Espero alguien pueda ayudarme

Gracias...

Eternal Idol

  • Moderador
  • ******
  • Mensajes: 4696
  • Nacionalidad: ar
    • Ver Perfil
Re: Velocidad variable de acceso al LPT
« Respuesta #1 en: Lunes 1 de Junio de 2009, 16:55 »
0
Puede ser, bajo XP tu programa de MS-DOS es emulado ... fijate si va bien en Windows 9x o en MS-DOS puro mejor.

Nacional y Popular En mi país la bandera de Eva es inmortal.


Queremos una Argentina socialmente justa, económicamente libre y  políticamente soberana.
¡Perón cumple, Evita dignifica!


La mano invisible del mercado me robo la billetera.

shadowpucci

  • Nuevo Miembro
  • *
  • Mensajes: 8
  • Nacionalidad: ar
    • Ver Perfil
Re: Velocidad variable de acceso al LPT
« Respuesta #2 en: Lunes 1 de Junio de 2009, 17:08 »
0
Cita de: "Eternal Idol"
Puede ser, bajo XP tu programa de MS-DOS es emulado ... fijate si va bien en Windows 9x o en MS-DOS puro mejor.

Gracias por la velocidad!! igualmente el programa final correra en un pc con ms-dos 6.0 asi que no me preocupo, pense que era un problema de la funcion delay()

una consultita mas, si entra en la oferta... cual puede ser el equivalente de outportb pero que funcione en el dev-c??

Eternal Idol

  • Moderador
  • ******
  • Mensajes: 4696
  • Nacionalidad: ar
    • Ver Perfil
Re: Velocidad variable de acceso al LPT
« Respuesta #3 en: Lunes 1 de Junio de 2009, 17:15 »
0
Cita de: "shadowpucci"
Gracias por la velocidad!! igualmente el programa final correra en un pc con ms-dos 6.0 asi que no me preocupo, pense que era un problema de la funcion delay()

No lo se, cuanto antes lo pruebes en MS-DOS mejor, tal vez no funciona, tal vez si.

Cita de: "shadowpucci"
una consultita mas, si entra en la oferta... cual puede ser el equivalente de outportb pero que funcione en el dev-c??

No se puede hacer de ninguna manera oficial, los puertos se acceden solo desde modo Kernel en S.O.s modernos.

Nacional y Popular En mi país la bandera de Eva es inmortal.


Queremos una Argentina socialmente justa, económicamente libre y  políticamente soberana.
¡Perón cumple, Evita dignifica!


La mano invisible del mercado me robo la billetera.