Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  

Показать сообщение отдельно
pva pva вне форума

Аватара для pva

Ветеран


Сообщения: 1180
Благодарности: 279

Профиль | Отправить PM | Цитировать


никакой специфики тут нет. Просто читайте программу.
Код: Выделить весь код
 while not Terminated do
 begin
   // >> 3. Может ли функция WaitCommEvent в данном фрагменте вернуть 0 (теоретически),
   // >> в коде этот случай не рассматривается...
   // это почему?
   // bool WaitCommEvent(...) bool - это 0(false) или 1(true)

   if not WaitCommEvent(hPort, dwMask, @OverRead) then
   begin
    // вернула 0
    // "не дождались", а ошибка - "идёт передача данных",
    // дожидаемся окончания это передачи
    if GetLastError = ERROR_IO_PENDING then
      WaitForSingleObject(OverRead.hEvent, INFINITE)
    else
      raise Exception.Create('Error waiting port event');
   end; // not WaitCommEvent

   // сюда попадаем только когда началась передача данных
   // если порт был занят, подождали. Если нет, попали сюда сразу

   if not ClearCommError(hPort, dwError, @ComStat) then
     raise Exception.Create('Error clearing port');
Это сообщение посчитали полезным следующие участники:

Отправлено: 09:27, 16-11-2006 | #3