Windows - статьи



         

ШАГ - часть 4


Сигнал Конт. Состояние

nSelectIn(1284 Active) 17 низкий
nAutoFeed 4 высокий
nStrobe 1 высокий
Initialize 16 высокий

В таком состоянии выводы находятся сразу после открытия порта, или после сброса драйвера (см. далее). При первом обращении к порту на предмет ввода-вывода драйвер сначала сообщит устройству о начале работы повторением последовательности согласования (на этот раз только для выбранного режима), а затем осуществит обмен данными. После этого состояние линий будет соответствовать выбранному режиму, и уже каждый последующий цикл ввода-вывода будет происходить по обычной схеме.

Код IOCTL_PAR_GET_DEFAULT_MODES применяется для запроса режима драйвера по умолчанию: CENTRONICS для записи и NONE для чтения. Может быть возможны и другие варианты, поэтому приведу команду целиком.

const IOCTL_PAR_GET_DEFAULT_MODES = $160028;

var Mode: PARCLASS_NEGOTIATION_MASK;

DeviceIoControl(hLpt, IOCTL_PAR_GET_DEFAULT_MODES, nil, 0, @Mode, sizeof(PARCLASS_NEGOTIATION_MASK), ret, lpOverlapped);

В структуре Mode возвращается режим по умолчанию в той же манере, что и для запроса текущего режима IOCTL_IEEE1284_GET_MODE.

Код IOCTL_PAR_GET_DEVICE_CAPS формирует запрос поддержки устройством различных режимов параллельного порта. Майкрософт заявляет о поддержке их драйвером спецификации IEEE1284, хотя есть немало существенных исключений, если доверять сайту экспертов этого протокола . К сожалению, у меня нет на руках самого документа, потому что IEEE просит за него около $100, поэтому дать 100% гарантию, что Майкрософт не прав не могу. Если у кого-то есть pdf оригинала, поделитесь с народом. Я говорю про IEEE1284.3 от 1994 года. А то без исходников происходит вечная путаница. Спецификация определяет пять основных режимов:

  • совместимости (Centronics);
  • полубайтный (Nibble);
  • байтный (Byte_Bidir);
  • EPP;
  • ECP.
  • Майкрософт добавляет несколько подрежимов:

  • адресуемый полубайтный (CHANNEL_NIBBLE);
  • программный EPP (EPP_SW);
  • программный ECP (ECP_SW);
  • упрощенный ECP (BOUNDED_ECP).



  • Содержание  Назад  Вперед