Чтобы наглядно убедиться в работоспособности программы соберите для удобства вот такую схему.

End Sub

Option Explicit

Работа с параллельным портом (LPT)

Инициализировать регистр управления прерываниями (порт 3F9h) и, если прерывания разрешены, установить адрес программы обработки прерываний от стыка RS-232.

Инициализировать регистр управления модемом (порт 3FCh).

Инициализировать регистр управления линией (порт 3FBh); при этом сбросить бит DLAB.

Установить бит DLAB порта 3FBh и заслать делитель, задающий скорость обмена, в порты 3F8h и 3F9h.

Если Вы хотите что-либо считывать с порта, то Вам необходимо переключить режим работы порта компьютера в режим EPP (Enhanced Parallel Port – режим двунаправленной передачи данных). Это делается в BIOS. Во время загрузки компьютера когда появится надпись Press DEL to enter setup, нажмите DEL, чтобы попасть в меню BIOS. Затем выберите раздел INTEGRATED PERIPHERALS и там выберите строку PARALLEL PORT MODE: измените режим работы Вашего порта на EPP или SPP/EPP. Сохраните сделанные изменения. Если же на Вашем компьютере нет режима EPP, то Вы сможете только передавать данные Параллельный порт для связи с принтером (или другим устройством) имеет базовый адрес &H378 (LPT1), &H278 (LPT2), &H3BC (LPT3).. Адресное пространство порта занимает диапазон &H378-&H37F. Адрес &H378 называется базовым и служит для передачи или чтения данных, через контакты 2-9 разъема LPT-порта. Адрес &H37A служит для передачи управляющих сигналов к устройству, подключенного к этому порту (принтер, сканер и т.д.). И, наконец, адрес &H379 предназначен для приема управляющих сигналов с устройства, подключенного к этому порту (принтер, сканер и т.д.). Рассмотрим конкретные примеры для каждого из адресов. Для написания статьи я использовал VB5 и библиотеку Inpout32.dll. В принципе подойдет любая другая, которая имеет возможность общаться с LPT портом.

В самом начале программы необходимо указать с какой библиотекой мы будем работать:

Private Declare Function Inp Lib "inpout32.dll" _

Alias "Inp32" (ByVal PortAddress As Integer) As Integer

Private Declare Sub Out Lib "inpout32.dll" _

Alias "Out32" (ByVal PortAddress As Integer, ByVal Value As Integer)

Передача числа 15 в LPT-порт адрес &H378

Private Sub Command1_Click()

Out &H378, 15

После нажатия кнопки Command1 на контактах 2-5 появиться уровень логической 1 (+5В) значит первые (сверху по схеме) 4 светодиода загорятся (1 + 2 + 4 + 8 = 15).

Команда: Out &H378, 0 - погасит все светодиоды

Команда: Out &H378, 255 - заставит все светодиоды светиться ( 1 + 2 + 4 + 8 + 16 + 32 + 64 + 128 = 255)

Прием данных из LPT- порта Адрес &H378 или &H37B-&H37F

Можно принимать данные либо по адресу &H378 либо в диапазоне адресов, начиная с &H37B - &H37F (по любому из них). В первом случае необходимо подавать сначала команду, переводящую порт в режим приема, а потом считывать данные по адресу &H378

Private Sub Command1_Click()

Out &H37A, 32

Text1.Text = Inp(&H378)