Управление LPT в Windows XP на C++ Builder

LPT C++ BuilderПрограммирование на C++ Builder непростая тема, особенно если это касается написания программ под железо. Тоесть программ управления различными электронными модулями посредством портов персонального компьютера. Особенно остро эта проблема встает при программировании для операционной системы Windows XP. Почему так? Потому, что приложения работающие под Windows Xp не имеют прямого доступа к портам компьютера.

Доступ к портам можно получить посредством драйверов которые работая во взаимодействии с операционной системой будут управлять ими. В Интернете по этому поводу представлено множество различных вариантов различных авторов. Один из вариантов это известный драйвер LPT порта Giveio позволяющий общаться с портом посредством обычного ассемблерного кода.

Как ни странно в сети представлена масса примеров использования данного драйвера в различных средах разработки. Но мне так и не удалось найти ни одного который бы показывал методику работы с Giveio в среде C++ Builder. Поэтому пришлось исследовать этот вопрос в части динамической загрузки драйвера и даже инсталляции его в систему с последующим запуском. В этой части представлена небольшая программка под C++ Builder 5 которая работает в купе со схемкой представленной ниже по тексту.

Управление LPT на C++Builder Тест LPT в XP на C++Builder

Что касается самой программы, проект которой выполнен на C++ Builder 5.0, то там все можно просмотреть в комментариях. Основное в данной программке это методика запуска драйвера через Service Control Manager Windows XP. Процедура запуска устроена таким образом, что даже не предполагает непосредственного копирования драйвера в папку с драйверами операционной системы. Главное, чтобы драйвер присутствовал в одной директори с исполнительным файлом приложения и он будет помещен куда надо и запущен. Дальнейшую работу с портом можно осуществлять посредством простейших ассемблерных функций, которые также представлены в примере.

Если у кого какие вопросы либо замечания милости просим по ссылке для комментов. Пока остается нерешенным вопрос организации прерываний на LPT. В частности рабочий пример с любым из известных драйверов LPT на С++ Builder. Если у кого есть, что сообщить по этому поводу также прошу на форму для комментов.

Top.Mail.Ru