[C con Clase] puerto paralelo

Steven Davidson steven en conclase.net
Mie Jun 20 02:23:47 CEST 2007


Hola Rafeal,

El pasado 2007-06-19 19:16:12, gödel escribió:

g> Hola a todos
g> Soy nuevo y tengo una duda para un proyecto , y la duda es alguien sabe como se puede leer el puerto paralelo entre internet y pruebas he conseguido , este archivo de cabecera y archivo de cuerpo. 
g> //*****************CABECERA**************************
g> #define EXPORT extern "C" __declspec(dllexport)
g> EXPORT int Lectura(int);
g> //**************CUERPO*******************************
g> #include <windows.h>
g> #include <dos.h>
g> #include "puerto.h"
g> BOOL WINAPI DllMain(HINSTANCE hInstance, DWORD fdwReason, PVOID pvReserved){
g>     return TRUE;
g> }
g> EXPORT int Lectura(int direccion){
g>     int numero;
g>     numero = inp(direccion);
g>     return numero;
g> }
g> Pero  no me queda muy claro , si alguien tuviera , alguna idea o algún sitio donde mirar

Esto es mucho código para algo tan simple como invocar 'inp()'. Bajo la biblioteca C bajo MS-Windows, las funciones son '_inp()', '_inpw()', e '_inpd()' para obtener un byte, word (2 bytes), y un word doble (4 bytes), respectivamente desde el puerto indicado.

Sin embargo, bajo las versiones actuales de MS-Windows, no se puede conectar a los puertos tan fácilmente. Básicamente tenemos que pedir al sistema operativo permiso para acceder y manipular los puertos. Para ello, creamos un "fichero" especial llamado "LPT1" o cualquier otro dígito hasta e incluyendo 9; o sea, de "LPT1" a "LPT9". Usamos 'CreateFile()' para crear un manipulador a estea recurso de comunicaciones. Debes indicar los siguientes atributos:
- 0 (cero) para el tercer parámetro que indica el modo de compartir
- El banderín 'OPEN_EXISTING' para el quinto parámetro de creación
- NULL para el último parámetro que indica la plantilla.

Para un ejemplo, sugiero consultar la sección de preguntas frecuentes en nuestra página. Puedes ir directamente a: http://c.conclase.net/preguntas.php#seriewin  En el ejemplo, programamos el puerto de serie, COM, pero el código te sirve para el puerto paralelo, LPT.


Otra posible solución es enviar datos abriendo el fichero especial "LPT1". Por ejemplo,

FILE *LPT1 = fopen( "LPT1", "wb" );
...

Pero esto puede o no funcionar bajo MS-Windows.


Espero que esto te ayude.

Steven


Más información sobre la lista de distribución Cconclase