Проблемы с COM-портом
От: Lomion  
Дата: 23.10.06 11:17
Оценка:
Всем доброго времени суток!!!
Вот с такой проблемкой столкнулся...

есть что-то такого типа кода:

отправитель:
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, все работает...
В общем случае, корректно работает, если интервал чтения превышает интервал отправки...

З.Ы. работа идет в асинхронном режиме
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.