controlar el puerto serie RS-232

16/07/2005 - 14:48 por Oscar | Informe spam
Me gustaria saber si alguien conoce algun programa o funcion en visual c++
que me permita controlar el puerto paralelo RS-232, es decir alguna funcion o
programa y como se usa, para poder enviar y recibir datos por el puerto serie
rs_232
saludo y gracias
 

Leer las respuestas

#1 Zephryn Xirdal
16/07/2005 - 15:44 | Informe spam
En Sat, 16 Jul 2005 14:48:02 +0200, Oscar escribió:

Me gustaria saber si alguien conoce algun programa o funcion en visual
c++
que me permita controlar el puerto paralelo RS-232, es decir alguna
funcion o
programa y como se usa, para poder enviar y recibir datos por el puerto
serie
rs_232


De uno de mis proyectos:


Abrirlo:

void Pepe::InitComm(const char *szComPort,DWORD dwDefaultReadTimeout)
{
DCB dcbComm;
m_hComm = CreateFile(szComPort, GENERIC_WRITE|GENERIC_READ, 0, NULL,
OPEN_EXISTING, 0, NULL);
if (m_hComm == INVALID_HANDLE_VALUE)
exit(1);

dcbComm.DCBlength = sizeof(DCB);

if(!GetCommState(m_hComm,&dcbComm))
{
CloseHandle(m_hComm);
exit(3);
}

dcbComm.BaudRate = CBR_9600;
dcbComm.ByteSize = 8;
dcbComm.Parity = NOPARITY;
dcbComm.StopBits = ONESTOPBIT;
dcbComm.fDtrControl=DTR_CONTROL_DISABLE;
dcbComm.fRtsControl=RTS_CONTROL_DISABLE;
dcbComm.fDsrSensitivityúLSE;

if (!SetCommState(m_hComm, &dcbComm))
{
CloseHandle(m_hComm);
exit(2);
}

COMMTIMEOUTS commTimeouts;
GetCommTimeouts(m_hComm,&commTimeouts);
commTimeouts.ReadTotalTimeoutConstant=dwDefaultReadTimeout;
SetCommTimeouts(m_hComm,&commTimeouts);
}

Leer:
/****
* Lee el posible mensaje de respuesta, sin esperar nada ni reintentar.
* Devuelve el número de bytes leídos
*/
unsigned char ::PeekMessage(void)
{
DWORD uBytesRead;
ReadFile(m_hComm,m_sResp,11,&uBytesRead,NULL);
return (unsigned char)uBytesRead;
}

Escribir:
/****
* Envía el mensaje indicado al dispositivo.
* Devuelve cierto si pudo hacerlo
*/
bool ::SendMessage(Action msg,bool bRetry)
{
if(!bRetry)
{
if(m_uAckNumber)
m_uAckNumber=0;
else
m_uAckNumber=1;
m_sPreg[2]=k_masterToSlave|m_uAckNumber;
m_sPreg[4]=(unsigned char)msg;
m_sPreg[7]=CalcCksumAsk();
}

DWORD dwNumBytesWritten;
WriteFile(m_hComm,m_sPreg,8,&dwNumBytesWritten,NULL);

m_error=0; //Cada vez que preguntamos reseteamos la condición de error

return (dwNumBytesWritten==8);
}
Las mujeres demasiado bellas sorprenden menos el segundo dia.
Powered by zxFortunes - It's free -
http://sourceforge.net/projects/zxfortune

Preguntas similares