In meinem oben verlinkten RN-Wissen Beispiel setze ich auch die Timeoutparameter. Hast du das auch implementiert ? offenbar wartet ja der PC, bis er dir die Daten übergibt
Code:
COMMTIMEOUTS sTo;
DCB sDcb;

memset(&sDcb,0,sizeof(sDcb));
sDcb.DCBlength          = sizeof(sDcb);
sDcb.BaudRate     = Baud;            // 9600 oder eine andere Baudrate
sDcb.fParity      = FALSE;
sDcb.fBinary      = TRUE;
sDcb.Parity       = NOPARITY;
sDcb.StopBits     = ONESTOPBIT;
sDcb.fOutxCtsFlow = FALSE;
sDcb.fOutxDsrFlow = FALSE; 
sDcb.fDtrControl = DTR_CONTROL_ENABLE;
sDcb.fRtsControl = RTS_CONTROL_ENABLE;
sDcb.fDsrSensitivity    = FALSE;
sDcb.fAbortOnError = FALSE;
sDcb.ByteSize     = 8;

if(SetCommState(hFile,&sDcb)) 
{
  sTo.ReadIntervalTimeout    = MAXDWORD; // 0 ms Read-Timeout
  sTo.ReadTotalTimeoutMultiplier   = 0; 
  sTo.ReadTotalTimeoutConstant     = 0; 
  sTo.WriteTotalTimeoutMultiplier  = 1; // 1*2 ms Write Timeout
  sTo.WriteTotalTimeoutConstant    = 2;
    if(SetCommTimeouts((HANDLE)hFile,&sTo))
return 1;  // O.K. return