C/Visual C - Escribir en el puerto paralelo

 
Vista:

Escribir en el puerto paralelo

Publicado por Andonic (1 intervención) el 04/07/2005 12:14:03
Saludos:

Me he hecho un pequeño programita para poder escribir en el puerto paralelo , en mi caso el LPT1.
Como tengo windows 2000 he utilizado las funciones CreateFile y WriteFile y no _inp y _outp, pero algo falla.
Este es el codigo:

HANDLE hPuerto;
DCB m_dcb;
BOOL m_PuertoPreparado;
BYTE dato;
DWORD iBytesEscritos;
bool error=false;

hPuerto=CreateFile("LPT1", // pointer to name of the file
GENERIC_READ|GENERIC_WRITE, // access (read-write) mode
0, // share mode
0, // pointer to security attributes
OPEN_EXISTING, // how to create
0, // file attributes
0); // handle to file with attributes to copy

//// El handle parece estar bien

if (hPuerto==INVALID_HANDLE_VALUE)
{
error=true;
}

//// GetCommState da un error : error 87 Invalid parameters

m_PuertoPreparado = GetCommState(hPuerto,&m_dcb);

///////////////////////////////////////////////////////////////////////


if(m_PuertoPreparado ==0) error=true;

// en teoría aquí modificamos la configuración del puerto
/// sin embargo GetCommState me da un error, así que esto no hace nada, supongo
//estos settings los saqué de esta direccion
// http://support.microsoft.com/defaul...&Product=vb6#10
/// aunque aquí estoy utilizando visual c++ 6.0 y en la pagina referenciada utilizan .NET

m_dcb.BaudRate = 9600;
m_dcb.ByteSize = 8;
m_dcb.Parity = NOPARITY;
m_dcb.StopBits = ONESTOPBIT;

m_PuertoPreparado = SetCommState(hPuerto, &m_dcb);

if(m_PuertoPreparado ==0) error=true;

//// escribimos en el puerto
dato=1;

//// WriteFile da este error: error 6 The handle is invalid

if ( WriteFile(hPuerto,&dato,1,&iBytesEscritos,NULL)==0) error=true;

//////////////////////////////////////////

CloseHandle(hComm);

Si comento el codigo desde GetCommState hasta SetCommState el programa se queda colgado al escribir (WriteFile). No se cual es el problema. Alguien tiene alguna idea?

Por ahí la mayoría de gente utiliza las funciones inp y outp, pero en windows 2000 al parecer no están a no ser que te bajes una dll que tiene funciones de acceso al puerto. Sin embargo me gustaría hacerlo funcionar con CreateFile y WriteFile . Gracias por la 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:Escribir en el puerto paralelo

Publicado por fernando.gomez (1603 intervenciones) el 04/07/2005 18:11:20
Tá raro... ando buscando información al respecto... Encontré esto:

hParallelPort = CreateFile("LPT1", GENERIC_READ Or GENERIC_WRITE, 0, IntPtr.Zero, _
OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, IntPtr.Zero)

Sin embargo, en tu código, en lugar de FILE_ATTRIBUTE_NORMAL tu dejas el cero...

El código anterior es para VB... sigo buscando, si encuentro algo más, te aviso...
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:Escribir en el puerto paralelo

Publicado por fernando.gomez (1603 intervenciones) el 04/07/2005 18:13:24
En el siguiente enlace:

http://www.nickles.de/c/p2/forum2-537803123.htm

también mencionan eso del FILE_ATTRIBUTE_NORMAL, quizás deberías intentar, a ver qué pasa...
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