MaterStudiorum.ru - домашняя страничка студента.
Минимум рекламы - максимум информации.


Авиация и космонавтика
Административное право
Арбитражный процесс
Архитектура
Астрология
Астрономия
Банковское дело
Безопасность жизнедеятельности
Биографии
Биология
Биология и химия
Биржевое дело
Ботаника и сельское хоз-во
Бухгалтерский учет и аудит
Валютные отношения
Ветеринария
Военная кафедра
География
Геодезия
Геология
Геополитика
Государство и право
Гражданское право и процесс
Делопроизводство
Деньги и кредит
Естествознание
Журналистика
Зоология
Издательское дело и полиграфия
Инвестиции
Иностранный язык
Информатика
Информатика, программирование
Исторические личности
История
История техники
Кибернетика
Коммуникации и связь
Компьютерные науки
Косметология
Краткое содержание произведений
Криминалистика
Криминология
Криптология
Кулинария
Культура и искусство
Культурология
Литература и русский язык
Литература(зарубежная)
Логика
Логистика
Маркетинг
Математика
Медицина, здоровье
Медицинские науки
Международное публичное право
Международное частное право
Международные отношения
Менеджмент
Металлургия
Москвоведение
Музыка
Муниципальное право
Налоги, налогообложение
Наука и техника
Начертательная геометрия
Новейшая история, политология
Оккультизм и уфология
Остальные рефераты
Педагогика
Полиграфия
Политология
Право
Право, юриспруденция
Предпринимательство
Промышленность, производство
Психология
Психология, педагогика
Радиоэлектроника
Разное
Реклама
Религия и мифология
Риторика
Сексология
Социология
Статистика
Страхование
Строительные науки
Строительство
Схемотехника
Таможенная система
Теория государства и права
Теория организации
Теплотехника
Технология
Товароведение
Транспорт
Трудовое право
Туризм
Уголовное право и процесс
Управление
Управленческие науки
Физика
Физкультура и спорт
Философия
Финансовые науки
Финансы
Фотография
Химия
Хозяйственное право
Цифровые устройства
Экологическое право
Экология
Экономика
Экономико-математическое моделирование
Экономическая география
Экономическая теория
Эргономика
Этика
Юриспруденция
Языковедение
Языкознание, филология
    Начало -> Информатика, программирование -> Ещё раз о прямом доступе к аппаратуре

Название:Ещё раз о прямом доступе к аппаратуре
Просмотров:55
Раздел:Информатика, программирование
Ссылка:none(0 KB)
Описание:LPT. COM.

Университетская электронная библиотека.
www.infoliolib.info

Часть полного текста документа:

Ещё раз о прямом доступе к аппаратуре Сивцов Павел Преамбула
    Однажды мой знакомый попросил написать ему простую программу - "сторожевой пёс". Всё, что нужно делать - это отловить момент размыкания или замыкания внешнего контакта и при наступлении такого события запустить другую программу. Работать программа должна под Windows XP. Задача выглядела элементарной. Единственное, что не хотелось делать - аппаратную часть. Т.е. лучше всего было бы найти такое решение, при котором почти ничего не нужно было бы паять.
    Достаточно быстро выяснилось, что проще всего для такой цели использовать опрос состояний LPT- или COM-портов. Тут и начинается самое интересное. LPT
    Для реализации "сторожевого пса" на LPT-порту можно использовать периодический опрос состояния некоторых его контактов. Можно просто выявлять состояния линий SELECTED (контакт 13), BUSY (контакт 11) и PAPER EMPTY (контакт 12). Достаточно замыкать/размыкать выбранный контакт с "землей" (контакты 18-25). Я выбрал использование BUSY - замыкал контакты 11 и 23. Итак, аппаратная часть получалась элементарной, теперь нужно было как-то достучаться до выбранного контакта с программной стороны. Тут-то и встретилась первая сложность - легальных способов прямого доступа к портам в линейке Windows NT нет. Использовать примочки типа gwio.sys, разрешающие прямой доступ к аппаратуре, очень не хотелось. Работа с портом как с файлом в данном случае не подходит, т.к. нужно не данные читать, а опрашивать состояния. Тем не менее, после длительного изучения MSDN, легальный доступ к некоторым линиям порта был обнаружен! Способ этот - доступ к порту через функцию DeviceIoControl(..., IOCTL_PAR_QUERY_INFORMATION, ...). Тут обнаружилась вторая сложность - отсутствие нужных заголовочных файлов для Delphi. Пришлось самостоятельно портировать ntddpar.h из DDK. Портированный файл получил название JwaNtDdPar.pas и был любезно добавлен Marcel van Brakel в JEDI Windows API Library.
    Небольшой пример демонстрирует итоговый код. Delphi 7.
    Пример кода uses SysUtils, JwaWinType, JwaWinNT, JwaWinBase, JwaNtDdPar; {$WARN SYMBOL_PLATFORM OFF} function GetLptStatus: Boolean; var eFileHandle: THandle; eInfo: TParQueryInformation; eBytesReturned: DWORD; begin // откроем порт eFileHandle := CreateFile('LPT1', GENERIC_READ, 0, nil, OPEN_EXISTING, 0, 0); Win32Check(eFileHandle INVALID_HANDLE_VALUE); try // узнаем состояние Win32Check(DeviceIoControl(eFileHandle, IOCTL_PAR_QUERY_INFORMATION, nil, 0, @eInfo, SizeOf(eInfo), @eBytesReturned, nil)); Result := (Byte(eInfo.Status) and PARALLEL_BUSY) = 0; finally // не забудьте закрыть хендл по завершению работы Win32Check(CloseHandle(eFileHandle)); end; end; Короткий и элегантный код, не правда ли? Для решения поставленной задачи достаточно опрашивать состояние порта раз-другой в секунду. В принципе, конечно же, лучше сразу открыть порт при старте, а закрыть по завершению.
    ПРЕДУПРЕЖДЕНИЕ
    К сожалению, не удастся открыть порт в режиме FILE_FLAG_OVERLAPPED, чтобы затем использовать преимущества асинхронной работы. Точнее, порт открыть удастся, не удастся получить событие при изменении статуса линий порта.
    Зато этот код успешно отработал из-под гостевой учетной записи под Windows XP. Последний нюанс - дребезг контактов. "Дребезг контактов - это явление многократного неконтролируемого замыкания и размыкания контактов в моменты их соприкосновения и расхождения". Длятся такие переходные процессы в кнопках около 10-15 миллисекунд. Т.е. с большой вероятностью мы будем получать ложные срабатывания нашего кода, если интервал между проверками будет короче.
    Надеюсь, этот пример работы с LPT-портом послужит хорошей демонстрацией того, как во многих случаях легко получить легальный доступ к аппаратуре без написания драйверов или обхода Hardware Abstraction Layer. ............






Похожие работы:

Название:Проект реконструкции контактной сети
Просмотров:532
Описание: Содержание Введение Данные для трассировки контактной сети на перегоне 1. Питание и секционирование контактной сети перегона 2. Определение сечения проводов контактной сети и выбор типа подвески 2.1 Опр

Название:Планирование и организация работ по восстановлению магистральной линии связи и контактной сети на заданном железнодорожном участке
Просмотров:358
Описание: Министерство транспорта РФ ГОУ ВПО ДВГУПС Факультет военного обучения Курсовой проект „Планирование и организация работ по восстановлению магистральной линии связи и контактно

Название:Формирование имиджа частного регионального телеканала (на примере телеканала "НТС" "Контакт-Медиа" г. Дивногорска)
Просмотров:319
Описание: Дипломная работа Формирование имиджа частного регионального телеканала (на примере телеканала НТС "Контакт-Медиа" г. Дивногорска). Оглавление Введение Глава 1. Специфика совре

Название:Социальные сети как инструмент PR деятельности на примере социальной сети "В Контакте"
Просмотров:283
Описание: Федеральное агентство по физической культуре и спорту Уральский Государственный Университет Физической Культуры Кафедра «Связи с общественностью» КУРСОВАЯ РАБОТА по дисциплине «Тео

Название:Одержання сірчаної кислоти контактним методом. Матеріальний і тепловий баланс процесу окисного випалу сірки
Просмотров:275
Описание: ЗМІСТ Вступ 1. ЗАВДАННЯ 2. ВИКОНАННЯ ЗАВДАННЯ 2.1 Аналітичний огляд методів 2.2 Фізико-хімічні основи виробництва 2.3 Опис технологічної схеми 2.4 Норми технологічного режиму 2.5 Розрахунок матеріального б

 
     

Вечно с вами © MaterStudiorum.ru