Карта сайта Kansoftware
НОВОСТИУСЛУГИРЕШЕНИЯКОНТАКТЫ
KANSoftWare

Писать в порт принтера

Delphi , ОС и Железо , Принтеры и Печать

Писать в порт принтера

Оформил: DeeCo
Автор: http://www.swissdelphicenter.ch

procedure Out32(portadresse: Word; wert: Byte);
 var
   val: Byte;
 begin
   val := Byte(wert);
   asm
     push dx
     mov dx,portadresse
     mov al,val
     out dx,al
     pop dx
   end;
 end;

 function Inp32(portadresse: Word): Byte;
 var
   val: Byte;
 begin
   asm
     push dx
     mov dx,portadresse
     in al,dx
     mov val,al
     pop dx
   end;
   Inp32 := Byte(val) and $00ff;
 end;


 // Example/Beispiel: 

  Out32($378, 0)  {= Dataport all 8 Bit Low}
   Out32($378, (Inp32($378) or 1); {Dataport Bit 1 High}
   Out32($378, (Inp32($378) and 254);  {Datap. Bit 1, Low}

Программа на Delphi, предназначенная для взаимодействия с параллельным портом на компьютере x86. Параллельный порт - тип интерфейса, который позволяет устройствам, таким как принтеры и сканеры, подключаться к компьютеру.

Процедура Out32 пишет байтовое значение в конкретную адресу на параллельном порте. Это достигается с помощью инструкции ассемблерного языка out dx, al, которая отправляет байтовое значение, хранящееся в регистре al, в параллельный порт по адресу, указанному в dx.

Функция Inp32 читает байт из конкретной адресы на параллельном порте и возвращает его как целочисленное значение. Это достигается с помощью инструкции ассемблерного языка in al, dx, которая получает байтовое значение из параллельного порта по адресу, указанному в dx. Полученное значение затем хранится в регистре al.

Пример кода демонстрирует, как использовать эти процедуры для управления принтером, подключенным к параллельному порту.

Разбивка каждого ряда:

  1. Out32($378, 0): Пишет байтовое значение 0 в адрес $378 на параллельном порте.
  2. Out32($378, (Inp32($378) or 1)): Читает текущее состояние параллельного порта по адресу $378, устанавливает бит 1 высоким, выполняя операцию побитового OR с 1, и пишет результат обратно в тот же адрес.
  3. Out32($378, (Inp32($378) and $FF)): Читает текущее состояние параллельного порта по адресу $378, очищает биты 1-7, выполняя операцию побитового AND с $FF (который является 8-битной маской, где все биты установлены в 1), и пишет результат обратно в тот же адрес.

Этот код может использоваться для управления принтером, подключенным к параллельному порту. Например, вы можете использовать его для включения или отключения принтера, установив бит 0 высокий или низкий, или для выбора конкретной бумажной ленты, установив биты 2-3 высокими или низкими.

Обратите внимание, что этот код является специфичным для компьютеров x86 и может не работать на других архитектурах. Кроме того, использование параллельных портов в целом считается устаревшим из-за распространения USB и других современных интерфейсов.

В статье описываются процедуры и функции на языке Delphi для управления портами ввода-вывода в принтере, включая запись и чтение данных в порт.


Комментарии и вопросы

Получайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Telegram-канал delphi_kansoftware и будьте в курсе последних тенденций в разработке под Linux, Windows, Android и iOS




Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.


:: Главная :: Принтеры и Печать ::


реклама


©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007
Top.Mail.Ru

Время компиляции файла: 2024-12-22 20:14:06
2025-06-16 15:30:10/0.0017571449279785/0