La forma de trabajar con los puertos es igual a como trabajas con ficheros. Para abir un puerto deberás hacer lo siguiente:
HANDLE m_hfCom;
DCB dcb;
if ((m_hfCom = CreateFile( "COM1", GENERIC_READ | GENERIC_WRITE,
0, // Acceso exclusivo
NULL, // Sin atributos de seguridad
OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL ,NULL )) == INVALID_HANDLE_VALUE )
{
//Tratamiento en caso de fallo
}
else
{
//Se piden las caracteristicas del puerto serie
GetCommState( m_hfCom, &dcb );
//Estableces las caracteristicas que quieres para puerto serie
//Por ejemplo, yo he puesto estascaracteristicas
dcb.fBinary = TRUE ; //Modo binario(En NT siempre TRUE)
dcb.fNull = false; //Para recibir bytes nulos
dcb.BaudRate = CBR_4800; // Velocidad
dcb.ByteSize = 8; //8 bytes
dcb.StopBits = ONESTOPBIT; //Un bit de stop
dcb.fParity = FALSE ; //Sin paridad
dcb.Parity = NOPARITY;
dcb.fInX = dcb.fOutX = false; //Sin control de flujo sofware
dcb.fOutxCtsFlow = false; //No Output flow control
dcb.fOutxDsrFlow = false; //No Output flow control
dcb.fDtrControl = DTR_CONTROL_ENABLE; //Control flujo DTR
//habilitado
dcb.fRtsControl = RTS_CONTROL_ENABLE; //Control flujo RTS
//habilitado
//Se pa