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


0