Я пытаюсь прочитать 20100 байт из моего COM-порта в Windows. Данные усекаются до 8192 байтов. Что дает? Когда я использую TeraTerm, усечение отсутствует. Мои синхронные звонки:
CreateFile(dev, GENERIC_READ | GENERIC_WRITE, 0, 0, OPEN_EXISTING, 0, 0);
И (фрагмент кода для неперекрывающихся только для чтения)
DWORD dwEventMask, dwIncommingReadSize;
int dwSize=0;
char szBuf[10];
if(!SetCommMask((void *) fd, EV_RXCHAR)) {THIS_RTN_ERROR}
do {
if(ReadFile((void *) fd, szBuf, 1, &dwIncommingReadSize, NULL) != 0) {
if(dwIncommingReadSize > 0) {
for (k=0; k<dwIncommingReadSize; k++) {
*(line_buf+dwSize+k) = szBuf[k];
}
dwSize += dwIncommingReadSize;
}
}
else {THIS_RTN_ERROR;}
} while(dwIncommingReadSize > 0);
k = dwSize;
return(k);
Это происходит сразу после WriteFile. Я итеративно вызываю этот код, пока не получу все данные, за исключением того, что получу только 8192 байта.