Figure 1: Initializing the port

BOOL    CPort::InitPort(const char* szPort){

    COMMTIMEOUTS cto =              {0,0,0,0,0};
    cto.ReadIntervalTimeout =       0xFFFFFFFF ;
    cto.WriteTotalTimeoutConstant = 5000 ;

    if ((_pData->_hPort =
           CreateFile(szPort, GENERIC_READ | GENERIC_WRITE, 0, 0,
               OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL |
                   FILE_FLAG_OVERLAPPED,0)) == (HANDLE) -1 ){
        Err("CreateFile");
        return FALSE ;
    }

    if (!SetCommMask(_pData->_hPort, EV_RXCHAR) ||
        !SetupComm(_pData->_hPort, 4096, 4096)  ||
        !SetCommTimeouts(_pData->_hPort, &cto)) {
            Err("Port config");
            return FALSE;
    }

    if (! SetDCB() ){
        Err("SetDCB");
        return FALSE;
    };

    return  TRUE;
};