На этом по поводу использования потоков для считывания данных из Com-порта, пожалуй, все.
Прилагающийся пример
Следуя правилам хорошего тона, прикладываю ко всему написанному работающий пример. В примере используется самое доступное устройство для пользователей интернет - модем (на Com-порту). В качестве "примочек" я использовал лампочки, которые включаются (или выключаются) при изменении статуса модема. Можно было прикрутить лампочки-детекторы входящих-выходящих сигналов, но вместо них используются счетчики байтов. Реализация кода включения-выключения не самая лучшая: можно было бы использовать TImageList для хранения изображений лампочек. Но почему-то ??? (кто знает почему - напишите) использование ImageList.GetBitmap при наличии запущенного потока "подвешивает" приложение насмерть. Причем это происходит под Windows'98, если тоже самое делать под Windows'95, то все в порядке.
Для проверки работоспособности примера попробуйте понабирать AT-команды
ATZ - инициализировать модем
ATH - положить трубку
ATH1 - поднять трубку
ATS0=1 - включить автоподнятие трубки на первый сигнал
ATS0=0 - выключить автоподнятие трубки
ATDP_номер_телефона_интернет_провайдера - мне нравится больше всего :)
ATDP - набор в импульсном режиме, ATDT - набор в тоновом режиме
Да, еще. Проект написан под Delphi3, при использовании Delphi более свежих версий возможны ошибки "несовпадения типов". В этом случае поменяйте типы "ошибочных" переменных с Integer на Cardinal.
Скачать проект — (17K) архив обновлен Другие небольшие статьи, примеры и программы можете найти на