Страница 1 из 1

Избитая тема COM-порта. А что если отвалилось?

Добавлено: 20 янв 2017, 07:03
Dr_Grizzly
Доброе всем! Пишу на Дельфе, для начала использовал TComPort компоненту, но сейчас понимаю, что мне хочется свое сделать. А пришел к этому по причине зависания/ошибки в программе когда устройство сидящее на СОМ порте вдруг заснуло/обесточилось... и тут начинаются танцы с бубном )) в лучшем случае рестарт системы.

Дак вот собственно вопрос - что происходит с портом, когда устройство отвалилось, но потом снова появилось? Как можно снова возобновить работу с портом?

Сейчас планирую написать прогу работающую с функциями CreateFile, GetCommState, SetCommState, SetCommMask, CreateThread. Ключевое тут - потоки. Хочу организовать отдельные потоки на прием, и на передачу данных, чтобы основная прога при этом работала независимо от состояния порта. Но при этом еще понимаю, что нужно организовать полную обработку ошибок с портом. А вот какое событие при каких нарушениях происходят еще не знаю... Вообщем ай нид хелп))

Re: Избитая тема COM-порта. А что если отвалилось?

Добавлено: 20 янв 2017, 15:40
somewhere
Дак вот собственно вопрос - что происходит с портом, когда устройство отвалилось, но потом снова появилось?
На аппаратном уровне есть возможность настроить генерирование прерывания при разрыве соединения или обнаружении ошибки.
Но здесь уже нужно знать на каком уровне ты хочешь общаться с COM-портом?

Re: Избитая тема COM-порта. А что если отвалилось?

Добавлено: 23 янв 2017, 07:31
Dr_Grizzly
Хороший вопрос, до низкого уровня не планировал опускаться )) Нашел интересную статью про СОМ порт Описание принципов работы СОМ порта, в нем нашел информацию, что есть некий 4-й бит регистра состояния линии 3FD, который отвечает за информацию о разрыве связи. Но как к нему обратится не знаю )