Управление 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. Если у кого есть, что сообщить по этому поводу также прошу на форму для комментов.


На моем рабочем компе тест с драйвером Giveio не заработал
На моем рабочем компе тест с драйвером Giveio не заработал. Причина пока не ясна. Вот такой же тест только с известным драйвером PortTalk http://acvarif.info/PortTalkTest_download.html Работает великолепно. Примечательно, что тест работает с любым адресом LPT порта (касается дополнительных встраиваемых модулей на шину PCI). В моем частном случае базовый адрес LPT встраиваемого модуля NrtMos PCI 0x9400. Модуль работает так же как и родной базовый порт ПК. Остался пока открыт вопрос с прерываниями. У кого какие предложения?

2010 09 27 02:39:14  Добавил:   Admin


   Всего комментариев: 1

* Заполните все поля
* Тема

* Ваше имя

* Ваш email: (нигде не публикуется)

*Новость (реплика)

Введите код подтверждения с картинки (проверка от автороботов):

 

email при указании не будет опубликован. Адреса с http:// преобразуются в ссылки автоматически. Теги запрещены.
Перейти и растаять в своей любимой социалке