Рефераты | Рефераты по информатике, программированию | Ещё раз о прямом доступе к аппаратуре
Ещё раз о прямом доступе к аппаратуре
Категория реферата: Рефераты по информатике, программированию
Теги реферата: отчет о прохождении практики, ценные бумаги реферат
Добавил(а) на сайт: Apraksin.
Короткий и элегантный код, не правда ли? Для решения
поставленной задачи достаточно опрашивать состояние порта раз-другой в секунду.
В принципе, конечно же, лучше сразу открыть порт при старте, а закрыть по
завершению.
ПРЕДУПРЕЖДЕНИЕ
К сожалению, не удастся открыть порт в
режиме FILE_FLAG_OVERLAPPED, чтобы затем использовать преимущества
асинхронной работы. Точнее, порт открыть удастся, не удастся получить событие
при изменении статуса линий порта.
Зато этот код успешно отработал из-под
гостевой учетной записи под Windows XP.
Последний нюанс — дребезг контактов. «Дребезг
контактов — это явление многократного неконтролируемого замыкания и размыкания
контактов в моменты их соприкосновения и расхождения». Длятся такие переходные
процессы в кнопках около 10-15 миллисекунд. Т.е. с большой вероятностью мы
будем получать ложные срабатывания нашего кода, если интервал между проверками
будет короче.
Надеюсь, этот пример работы с LPT-портом послужит
хорошей демонстрацией того, как во многих случаях легко получить легальный
доступ к аппаратуре без написания драйверов или обхода Hardware Abstraction
Layer. Не для того этот HAL придумывали, чтобы его обходить.
Доводилось читать о случаях захвата порта спулером
печати, но на практике такую ситуацию встретить не удалось. Если кто-нибудь
сможет прояснить этот вопрос, я буду рад.
ПРИМЕЧАНИЕ
Кстати, в середине страницы http://cooler.irk.ru/cl190902.html
изложено достаточно интересное письмо, в котором описывается работа с портом
в режиме IEEE_COMPATIBILITY. Такой режим позволяет с минимумом телодвижений
обеспечить полноценный вывод данных на самодельное LPT- устройство.
COM
При использовании COM-порта задача обнаружения
внешнего события может быть решена ещё проще. Достаточно замыкать/размыкать
контакты 7 (RTS) и 8 (CTS) у девятиконтактного разъема (опять ничего не
придется паять) и проверять наличие сигнала CTS. Причем опрос можно производить
через стандартный CommApi.