• Sábado 4 de Mayo de 2024, 23:55

Autor Tema:  Como Trato El Puerto Paralelo???  (Leído 2045 veces)

© Jonathan ©

  • Moderador
  • ******
  • Mensajes: 1671
  • Nacionalidad: ar
    • Ver Perfil
    • http://www.einstec.com.ar
Como Trato El Puerto Paralelo???
« en: Lunes 26 de Abril de 2004, 21:36 »
0
Hola a todos, hacia rato que no viajaba por aqui y dejaba algun post, ahora llego el momento de dejar una duda... el pproblema consiste en que quiero manejar el puerto LPT sobre windows XP y NT pero no logro manejarlo de ninguna manera, ya que aparentemente no se puede programar en assembler sobre esots OS... como puedo hacer para manejar los puertos dentro de estos windows, la idea seria hacer una DLL, pero no se como empezarla. Alguien me podria dar una mano. Saludos y mil Gracias :hola:
EINSTEC Tecnología «La única fuente del conocimiento es la experiencia.»

«Lo importante es no dejar de hacerse preguntas.»

JuanK

  • Miembro de ORO
  • ******
  • Mensajes: 5393
  • Nacionalidad: co
    • Ver Perfil
    • http://juank.io
Re: Como Trato El Puerto Paralelo???
« Respuesta #1 en: Lunes 26 de Abril de 2004, 21:49 »
0
hola amigo lo mas facil es que uses la api de windows.
[size=109]Juan Carlos Ruiz Pacheco
[/size]
Microsoft Technical Evangelist
@JuanKRuiz
http://juank.io

© Jonathan ©

  • Moderador
  • ******
  • Mensajes: 1671
  • Nacionalidad: ar
    • Ver Perfil
    • http://www.einstec.com.ar
Re: Como Trato El Puerto Paralelo???
« Respuesta #2 en: Martes 27 de Abril de 2004, 13:42 »
0
JuanK, que buena imagen tienes como avatar!!! :D ... y sobre las api, he estado buscandolas por todo el mundo a traves del google y alltheweb y no logro encontrar la API que maneja este puerto, Solo tengo info de la API del port Comm, pero no del LPT, como hago para encontrar la info. Gracias y Mil Saludos :hola:
EINSTEC Tecnología «La única fuente del conocimiento es la experiencia.»

«Lo importante es no dejar de hacerse preguntas.»

Gelion

  • Miembro activo
  • **
  • Mensajes: 39
    • Ver Perfil
    • http://www.gelion.cjb.net
Re: Como Trato El Puerto Paralelo???
« Respuesta #3 en: Martes 27 de Abril de 2004, 20:04 »
0
...LPT

Tengo esto, no se si te sirva

Código: Text
  1.  
  2. -Determina la direccion del puerto paralelo
  3. -Puerto.c
  4. #include <stdio.h>
  5. #include <dos.h>
  6.  
  7. int main()
  8. {
  9.     unsigned int __far *puntero_a_direccion;
  10.     int i;
  11.  
  12.     puntero_a_direccion=(unsigned int __far *)0x00000408;
  13.  
  14.     for (i=0; i<3; i++)
  15.     {
  16.         if (*puntero_a_direccion == 0)
  17.         printf("No se encontro puerto asignado a LPT%d \n", i+1);
  18.         else
  19.         printf("La direccion asignada a LPT%d es 0x%Xh\n",
  20.           i+1, *puntero_a_direccion);
  21.         puntero_a_direccion++;
  22.     }
  23.  
  24.     return 0;
  25. }
  26.  
  27.  

Otro para la informacion del puerto

Código: Text
  1.  
  2. #include <stdio.h>
  3. #include <dos.h>
  4.  
  5. int puerto(int direcc);
  6. int seleccion;
  7.  
  8. int main()
  9. {
  10.     unsigned int __far *puntero_a_direccion;
  11.     int i, direccion[3]={0,0,0}, disponible[3]={0,0,0};
  12.  
  13.     puntero_a_direccion = (unsigned int __far *)0x00000408;
  14.  
  15.     printf("Seleccione el puerto:\n");
  16.     /* ¿Cuantos puertos existen? */
  17.     for (i=0; i<3; i++)
  18.     {
  19.         if (*puntero_a_direccion == 0)
  20.         printf("Puerto LPT%d...............no disponible\n", i+1);
  21.         else
  22.         {
  23.             disponible[i] = 1;
  24.             direccion[i] = *puntero_a_direccion;
  25.             printf("Puerto LPT%d...............%d\n", i+1, i+1);
  26.         }
  27.         puntero_a_direccion++;
  28.     }
  29.     printf("Salir del programa........0\n");
  30.     scanf("%d", &seleccion);
  31.  
  32.     do
  33.     {
  34.         switch(seleccion)
  35.         {
  36.             case 0:/* Salir del programa */
  37.             printf("Adios!!!\n");
  38.             return 0;
  39.             break;
  40.  
  41.             case 1:/* Puerto LPT1 */
  42.             if(disponible[0]==1)
  43.             puerto(direccion[0]);
  44.             else
  45.             {
  46.                 printf("ERROR: PUERTO NO DISPONIBLE\n");
  47.                 return 0;
  48.             }
  49.             break;
  50.  
  51.             case 2:/* Puerto LPT2 */
  52.             if(disponible[1]==1)
  53.             puerto(direccion[1]);
  54.             else
  55.             {
  56.                 printf("ERROR: PUERTO NO DISPONIBLE\n");
  57.                 return 0;
  58.             }
  59.             break;
  60.  
  61.             case 3:/* Puerto LPT3 */
  62.             if(disponible[2]==1)
  63.             puerto(direccion[2]);
  64.             else
  65.             {
  66.                 printf("ERROR: PUERTO NO DISPONIBLE\n");
  67.                 return 0;
  68.             }
  69.             break;
  70.  
  71.             default:
  72.             printf("ERROR: OPCION INCORRECTA!\n");
  73.             break;
  74.         }
  75.         if(seleccion!=0)
  76.         {
  77.             printf("Seleccione otra opcion\n");
  78.             scanf("%d", &seleccion);
  79.         }
  80.     }
  81.     while(seleccion!=0);
  82.  
  83.     return 0;
  84. }
  85.  
  86. int puerto(int direcc)
  87. {
  88.     unsigned char valor; /* Solo valores entre 0 y 255 */
  89.  
  90.     printf("Ahora puede escribir cualquier valor\n");
  91.     printf("entre 1 y 255, 0 para terminar el programa\n");
  92.     do
  93.     {
  94.         printf("Valor al puerto?\n");
  95.         scanf("%d", &valor);
  96.         outp(direcc, valor);
  97.         printf("Se ha escrito %d al puerto\n", valor);
  98.     }
  99.     while(valor!=0);
  100.  
  101.     return seleccion=0;
  102. }
  103.  
  104.  

Si quieres el codigo de la dll, tambien lo tengo, pero ya me voy, en la noche lo pongo.
Sé que crees que comprendes lo que piensas que he dicho, pero no estoy seguro de que lo que creíste oír sea lo que yo quise decir

Ruben3d

  • Miembro HIPER activo
  • ****
  • Mensajes: 710
  • Nacionalidad: es
    • Ver Perfil
    • Web personal
Re: Como Trato El Puerto Paralelo???
« Respuesta #4 en: Martes 27 de Abril de 2004, 20:17 »
0
En teoría, los sistemas basados en WinNT no deberían dejarte acceder así como así a la dirección de un dispositivo, aunque no sé si funcionará, porque no he probado nunca a hacer eso.

Un saludo.

Ruben3d

© Jonathan ©

  • Moderador
  • ******
  • Mensajes: 1671
  • Nacionalidad: ar
    • Ver Perfil
    • http://www.einstec.com.ar
Re: Como Trato El Puerto Paralelo???
« Respuesta #5 en: Martes 27 de Abril de 2004, 23:45 »
0
Voy a ver si se puede adaptar, ya que lo necesito para modo grafico sobre win XP... creo que ya he solucionado el problema, Gracias a todos, al que necesite info acerca del tema, aqui me tienen. Saludos y nuevamente Gracias!!! :hola:
EINSTEC Tecnología «La única fuente del conocimiento es la experiencia.»

«Lo importante es no dejar de hacerse preguntas.»