Ich habe deine Einstellungen übernommen:
Code:
    memset(&dcbSerialParams,0,sizeof(dcbSerialParams));
    dcbSerialParams.DCBlength          = sizeof(dcbSerialParams);
    dcbSerialParams.BaudRate         = CBR_128000;            // 9600 oder eine andere Baudrate
    dcbSerialParams.fParity          = FALSE;
    dcbSerialParams.fBinary          = TRUE;
    dcbSerialParams.Parity           = NOPARITY;
    dcbSerialParams.StopBits         = ONESTOPBIT;
    dcbSerialParams.fOutxCtsFlow     = FALSE;
    dcbSerialParams.fOutxDsrFlow     = FALSE; 
    dcbSerialParams.fDtrControl    = DTR_CONTROL_ENABLE;
    dcbSerialParams.fRtsControl    = RTS_CONTROL_ENABLE;
    dcbSerialParams.fDsrSensitivity    = FALSE;
    dcbSerialParams.fAbortOnError    = FALSE;
    dcbSerialParams.ByteSize         = 8;


    timeouts.ReadIntervalTimeout    = MAXDWORD; // 0 ms Read-Timeout
    timeouts.ReadTotalTimeoutMultiplier   = 0; 
    timeouts.ReadTotalTimeoutConstant     = 0; 
    timeouts.WriteTotalTimeoutMultiplier  = 1; // 1*2 ms Write Timeout
    timeouts.WriteTotalTimeoutConstant    = 2;
Hat leider keine Veränderungen gebracht

Meine Einstellungen mit dem Timeout waren vorher:
Code:
tbResult InitSerialPort(HWND hwnd)
{
    LPCTSTR SeriellerPort = TEXT("COM4");
    hSerial = CreateFile(SeriellerPort,
        GENERIC_READ | GENERIC_WRITE,
        0,
        0,
        OPEN_EXISTING,
        FILE_ATTRIBUTE_NORMAL,
        0);

    if(hSerial==INVALID_HANDLE_VALUE)
    {
        if(GetLastError()==ERROR_FILE_NOT_FOUND)
        {
            // Generate an error
            // Fehlercode ausgeben
            if(!GetProcessId(NULL))
            {
                
                MessageBox(hwnd, (LPCWSTR)"Fehler bei LGetProcessId",
                    (LPCWSTR)L"Fehler", MB_OK | MB_ICONEXCLAMATION);
                
                return TB_ERROR;

            }
            //serial port does not exist. Inform user.
            MessageBox(hwnd, (LPCWSTR)L"Fehler bei CreateFile. Serial Port existiert nicht!",
                (LPCWSTR)L"Fehler", MB_OK | MB_ICONEXCLAMATION);
        
            return TB_ERROR;

        }
        //some other error occurred. Inform user
        MessageBox(hwnd, (LPCWSTR)L"Fehler bei CreateFile. Sonstiger Fehler!",
            (LPCWSTR)L"Fehler", MB_OK | MB_ICONEXCLAMATION);
        
        return TB_ERROR;
    }

    if (!GetCommState(hSerial, &dcbSerialParams)) 
    {
        //error getting state
        MessageBox(hwnd, (LPCWSTR)L"Fehler bei GetCommState!",
            (LPCWSTR)L"Fehler", MB_OK | MB_ICONEXCLAMATION);
        
        return TB_ERROR;
    }
    
    /*
    memset(&dcbSerialParams,0,sizeof(dcbSerialParams));
    dcbSerialParams.DCBlength          = sizeof(dcbSerialParams);
    dcbSerialParams.BaudRate         = CBR_128000;            // 9600 oder eine andere Baudrate
    dcbSerialParams.fParity          = FALSE;
    dcbSerialParams.fBinary          = TRUE;
    dcbSerialParams.Parity           = NOPARITY;
    dcbSerialParams.StopBits         = ONESTOPBIT;
    dcbSerialParams.fOutxCtsFlow     = FALSE;
    dcbSerialParams.fOutxDsrFlow     = FALSE; 
    dcbSerialParams.fDtrControl    = DTR_CONTROL_ENABLE;
    dcbSerialParams.fRtsControl    = RTS_CONTROL_ENABLE;
    dcbSerialParams.fDsrSensitivity    = FALSE;
    dcbSerialParams.fAbortOnError    = FALSE;
    dcbSerialParams.ByteSize         = 8;


    timeouts.ReadIntervalTimeout    = MAXDWORD; // 0 ms Read-Timeout
    timeouts.ReadTotalTimeoutMultiplier   = 0; 
    timeouts.ReadTotalTimeoutConstant     = 0; 
    timeouts.WriteTotalTimeoutMultiplier  = 1; // 1*2 ms Write Timeout
    timeouts.WriteTotalTimeoutConstant    = 2;
    */
    
    dcbSerialParams.BaudRate= CBR_128000; //CBR_57600;
    dcbSerialParams.ByteSize=8;
    dcbSerialParams.StopBits=ONESTOPBIT;
    dcbSerialParams.Parity=NOPARITY;
    dcbSerialParams.fOutxCtsFlow=0;
    dcbSerialParams.fOutxDsrFlow=0;
    
    
    if(!SetCommState(hSerial, &dcbSerialParams))
    {
        //error setting serial port state
        MessageBox(hwnd, (LPCWSTR)L"Fehler bei GetCommState beim Parameter belegen!",
            (LPCWSTR)L"Fehler", MB_OK | MB_ICONEXCLAMATION);
        
        return TB_ERROR;
    }
    
    timeouts.ReadIntervalTimeout=50;
    timeouts.ReadTotalTimeoutConstant=50;
    timeouts.ReadTotalTimeoutMultiplier=10;
    timeouts.WriteTotalTimeoutConstant=50;
    timeouts.WriteTotalTimeoutMultiplier=10;
    
    if(!SetCommTimeouts(hSerial, &timeouts))
    {
        //error occureed. Inform user
            MessageBox(hwnd, (LPCWSTR)L"Fehler bei Timeout!",
            (LPCWSTR)L"Fehler", MB_OK | MB_ICONEXCLAMATION);
        
        return TB_ERROR;
    }
    return TB_OK;
}
Schwieriges Thema