Привет.
Есть некая функция, в теле которой проиходит подключение к COM-порту и считывание данных с устройства, подключенного к этому порту.
Некоторая часть кода:
DWORD CheckDevice(int PortNum)
{
char port[16] = {0};
sprintf(port, "\\\\.\\COM%d", PortNum);
DWORD result;
DWORD size = 512, n = 0;
char * buffer = new char[size];
memset(buffer, 0, size);
// ..........
hPort = CreateFile(port, GENERIC_READ | GENERIC_WRITE, 0, NULL, OPEN_EXISTING, 0, NULL);
if(hPort)
{
ReadFile (hPort, buffer, size, &n, NULL);
//..............
}
else
{
result << INVALID_HANDLE_VALUE;
}
delete [] buffer;
return result;
}
Сие мега устройство, к которому происходит коннект, может сильно тупить и иногода ReadFile зависает на неопределенный период.
Можно ли установить таймаут, аля как в сокетах (если данные не пришли за время t, то идем дальше, а не висим 1,5 часа)?
11.12.08 00:36: Перенесено модератором из 'C/C++' — Кодт