Читаем Советы по Delphi. Версия 1.4.3 от 1.1.2001 полностью

begin

 FRxFull:=Value;

 if hComm<0 then exit;

 EnableCommNotification(hComm,FWindowHandle,FRxFull,FTxLow);

end;

procedure TComm.SetTxLow(Value:Word);

begin

 FTxLow:=Value;

 if hComm<0 then exit;

 EnableCommNotification(hComm,FWindowHandle,FRxFull,FTxLow);

end;

procedure TComm.SetEvents(Value:TCommEvents);

var EventMask:Word;

begin

 FEvents:=Value;

 if hComm<0 then exit;

 EventMask:=0;

 if tceBreak in FEvents then inc(EventMask,EV_BREAK);

 if tceCts in FEvents then inc(EventMask,EV_CTS);

 if tceCtss in FEvents then inc(EventMask,EV_CTSS);

 if tceDsr in FEvents then inc(EventMask,EV_DSR);

 if tceErr in FEvents then inc(EventMask,EV_ERR);

 if tcePErr in FEvents then inc(EventMask,EV_PERR);

 if tceRing in FEvents then inc(EventMask,EV_RING);

 if tceRlsd in FEvents then inc(EventMask,EV_RLSD);

 if tceRlsds in FEvents then inc(EventMask,EV_RLSDS);

 if tceRxChar in FEvents then inc(EventMask,EV_RXCHAR);

 if tceRxFlag in FEvents then inc(EventMask,EV_RXFLAG);

 if tceTxEmpty in FEvents then inc(EventMask,EV_TXEMPTY);

 SetCommEventMask(hComm,EventMask);

end;

procedure TComm.WndProc(var Msg:TMessage);

begin

 with Msg do begin

  if Msg=WM_COMMNOTIFY then begin

   case lParamLo of

   CN_EVENT:

    DoEvent;

   CN_RECEIVE:

    DoReceive;

   CN_TRANSMIT:

    DoTransmit;

   end;

  end else Result:=DefWindowProc(FWindowHandle, Msg, wParam, lParam);

 end;

end;

procedure TComm.DoEvent;

var

 CommEvent:TCommEvents;

 EventMask:Word;

begin

 if (hComm<0) or not Assigned(FOnEvent) then exit;

 EventMask:=GetCommEventMask(hComm,Integer($FFFF));

 CommEvent:=[];

 if (tceBreak in Events) and (EventMask and EV_BREAK<>0) then CommEvent:=CommEvent+[tceBreak];

 if (tceCts in Events) and (EventMask and EV_CTS<>0) then CommEvent:=CommEvent+[tceCts];

 if (tceCtss in Events) and (EventMask and EV_CTSS<>0) then CommEvent:=CommEvent+[tceCtss];

 if (tceDsr in Events) and (EventMask and EV_DSR<>0) then CommEvent:=CommEvent+[tceDsr];

 if (tceErr in Events) and (EventMask and EV_ERR<>0) then CommEvent:=CommEvent+[tceErr];

 if (tcePErr in Events) and (EventMask and EV_PERR<>0) then CommEvent:=CommEvent+[tcePErr];

 if (tceRing in Events) and (EventMask and EV_RING<>0) then CommEvent:=CommEvent+[tceRing];

 if (tceRlsd in Events) and (EventMask and EV_RLSD<>0) then CommEvent:=CommEvent+[tceRlsd];

 if (tceRlsds in Events) and (EventMask and EV_Rlsds<>0) then CommEvent:=CommEvent+[tceRlsds];

 if (tceRxChar in Events) and (EventMask and EV_RXCHAR<>0) then CommEvent:=CommEvent+[tceRxChar];

 if (tceRxFlag in Events) and (EventMask and EV_RXFLAG<>0) then CommEvent:=CommEvent+[tceRxFlag];

 if (tceTxEmpty in Events) and (EventMask and EV_TXEMPTY<>0) then CommEvent:= CommEvent+[tceTxEmpty];

 FOnEvent(Self,CommEvent);

end;

procedure TComm.DoReceive;

var Stat:TComStat;

begin

 if (hComm<0) or not Assigned(FOnReceive) then exit;

 GetCommError(hComm,Stat);

Перейти на страницу:

Похожие книги

Основы программирования в Linux
Основы программирования в Linux

В четвертом издании популярного руководства даны основы программирования в операционной системе Linux. Рассмотрены: использование библиотек C/C++ и стан­дартных средств разработки, организация системных вызовов, файловый ввод/вывод, взаимодействие процессов, программирование средствами командной оболочки, создание графических пользовательских интерфейсов с помощью инструментальных средств GTK+ или Qt, применение сокетов и др. Описана компиляция программ, их компоновка c библиотеками и работа с терминальным вводом/выводом. Даны приемы написания приложений в средах GNOME® и KDE®, хранения данных с использованием СУБД MySQL® и отладки программ. Книга хорошо структурирована, что делает обучение легким и быстрым. Для начинающих Linux-программистов

Нейл Мэтью , Ричард Стоунс , Татьяна Коротяева

ОС и Сети / Программирование / Книги по IT
97 этюдов для архитекторов программных систем
97 этюдов для архитекторов программных систем

Успешная карьера архитектора программного обеспечения требует хорошего владения как технической, так и деловой сторонами вопросов, связанных с проектированием архитектуры. В этой необычной книге ведущие архитекторы ПО со всего света обсуждают важные принципы разработки, выходящие далеко за пределы чисто технических вопросов.?Архитектор ПО выполняет роль посредника между командой разработчиков и бизнес-руководством компании, поэтому чтобы добиться успеха в этой профессии, необходимо не только овладеть различными технологиями, но и обеспечить работу над проектом в соответствии с бизнес-целями. В книге более 50 архитекторов рассказывают о том, что считают самым важным в своей работе, дают советы, как организовать общение с другими участниками проекта, как снизить сложность архитектуры, как оказывать поддержку разработчикам. Они щедро делятся множеством полезных идей и приемов, которые вынесли из своего многолетнего опыта. Авторы надеются, что книга станет источником вдохновения и руководством к действию для многих профессиональных программистов.

Билл де Ора , Майкл Хайгард , Нил Форд

Программирование, программы, базы данных / Базы данных / Программирование / Книги по IT
Программист-прагматик. Путь от подмастерья к мастеру
Программист-прагматик. Путь от подмастерья к мастеру

Находясь на переднем крае программирования, книга "Программист-прагматик. Путь от подмастерья к мастеру" абстрагируется от всевозрастающей специализации и технических тонкостей разработки программ на современном уровне, чтобы исследовать суть процесса – требования к работоспособной и поддерживаемой программе, приводящей пользователей в восторг. Книга охватывает различные темы – от личной ответственности и карьерного роста до архитектурных методик, придающих программам гибкость и простоту в адаптации и повторном использовании.Прочитав эту книгу, вы научитесь:Бороться с недостатками программного обеспечения;Избегать ловушек, связанных с дублированием знания;Создавать гибкие, динамичные и адаптируемые программы;Избегать программирования в расчете на совпадение;Защищать вашу программу при помощи контрактов, утверждений и исключений;Собирать реальные требования;Осуществлять безжалостное и эффективное тестирование;Приводить в восторг ваших пользователей;Формировать команды из программистов-прагматиков и с помощью автоматизации делать ваши разработки более точными.

А. Алексашин , Дэвид Томас , Эндрю Хант

Программирование / Книги по IT