Всем доброго времени суток!!!
Вот с такой проблемкой столкнулся...
есть что-то такого типа кода:
отправитель:
char buf [] = "123456";
while (true)
{
WriteFile (h, buf, 6, ...);
Sleep (1000);
}
приемник:
while (true)
{
char buf [4] = {4};
DWORD read = 0;
BOOL ret = ReadFile (h1, buf, 3, &read, &o);
BOOL retW = WaitForSingleObject (o.hEvent, 100);
if (retW == 258)
continue;
BOOL retG = GetOverlappedResult (h1, &o, &read, false);
if (read == 0)
continue;
std::cout << buf << "\n";
}
т.е. читаем данные из COM-порта по 3 байта...
с другого конца данные льется по 6 байт с интервалом 1000 мс...
таймаут чтения 100 мс...
по идее, должно выводиться:
123
456
123
456
...
но выводиться:
123
456
456
456
456
...
Если увеличить интервал чтения до 1500, все работает...
В общем случае, корректно работает, если интервал чтения превышает интервал отправки...
З.Ы. работа идет в асинхронном режиме