Категория
Информатика
Тип
реферат
Страницы
6 стр.
Дата
02.04.2010
Формат файла
.rtf — Rich Text Format (Wordpad)
Архив
20747.zip — 9.88 kb
  • eshhjo-raz-o-prjamom-dostupe-k-apparature_20747_1.rtf — 51.16 Kb
  • Readme_docus.me.txt — 125 Bytes
Рейтинг
10  из 10
Оценок
1
Оцените работу
Хорошо  или  Плохо


Текст работы

Ещё раз о прямом доступе к аппаратуре Alena Alena
Ещё раз о прямом доступе к аппаратуре
Сивцов Павел
Преамбула
Однажды мой знакомый попросил написать ему простую программу — «сторожевой пёс». Всё, что нужно делать —
это отловить момент размыкания или замыкания внешнего контакта и при наступлении такого события запустить другую программу. Работать программа должна под Windows XP. Задача выглядела элементарной. Единственное, что не хотелось делать — аппаратную часть. Т.е. лучше всего было бы найти такое решение, при котором почти ничего не нужно было бы паять.
Достаточно быстро выяснилось, что проще всего для такой цели использовать опрос состояний LPT- или COM-портов. Тут и начинается самое интересное.
LPT
Для реализации «сторожевого пса»
на LPT-порту можно использовать периодический опрос состояния некоторых
его контактов. Можно просто выявлять состояния линий SELECTED (контакт 13), BUSY (контакт 11) и PAPER EMPTY (контакт 12). Достаточно замыкать/размыкать выбранный контакт с «землей» (контакты 18– 25). Я выбрал использование BUSY — замыкал контакты 11 и 23. Итак, аппаратная часть получалась элементарной, теперь нужно было как-то
достучаться до выбранного контакта с программной стороны. Тут-то и встретилась первая сложность — легальных способов прямого доступа к портам
в линейке Windows NT нет. Использовать примочки типа s, разрешающие прямой доступ к аппаратуре, очень не хотелось. Работа с портом как с файлом в данном случае не подходит, т.к. нужно не данные читать, а опрашивать состояния. Тем
не менее, после длительного изучения MSDN, легальный доступ к некоторым линиям порта был обнаружен! Способ этот — доступ к порту через функцию DeviceIoControl(…, IOCTL_PAR_QUERY_INFORMATION, …).



Ваше мнение



CAPTCHA