Рефераты | Рефераты по информатике, программированию | Ещё раз о прямом доступе к аппаратуре | страница реферата 2 | Большая Энциклопедия Рефератов от А до Я
Большая Энциклопедия Рефератов от А до Я
  • Рефераты, курсовые, шпаргалки, сочинения, изложения
  • Дипломы, диссертации, решебники, рассказы, тезисы
  • Конспекты, отчеты, доклады, контрольные работы

  • Короткий и элегантный код, не правда ли? Для решения поставленной задачи достаточно опрашивать состояние порта раз-другой в секунду. В принципе, конечно же, лучше сразу открыть порт при старте, а закрыть по завершению.

    ПРЕДУПРЕЖДЕНИЕ

    К сожалению, не удастся открыть порт в режиме 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.

    Пример кода

    function GetComStatus: Boolean;

    var

     eFileHandle: THandle;

     eStatus: DWORD;

    begin

     // откроем порт

     eFileHandle := CreateFile('COM1', GENERIC_READ, 0, nil, OPEN_EXISTING, 0, 0);

     Win32Check(eFileHandle <> INVALID_HANDLE_VALUE);

     try

     // узнаем состояние

     Win32Check(GetCommModemStatus(eFileHandle, eStatus));


    Рекомендуем скачать другие рефераты по теме: экзамены, реферат на тему мир.



    Предыдущая страница реферата | 1  2  3  4  5  6 |




    Поделитесь этой записью или добавьте в закладки

       




    Категории:



    Разделы сайта




    •