Приветствую Вас, filat! Вариант первый - напрямую, через порты. Вариант второй - применяя модуль Printer. Второй вариант предпочтительней, т. к. он проще и гибче. Просто в модуле Print создается файловая переменная Lst, которая ассоциирована с LPT1. Можно с портом работать как с файлом!
Ответ отправлен: 05.06.2003, 08:42 Отправитель: Дмитрий Отвечает Tibor
Доброе время суток, filat! Ну как, пишеш и читаеш :) А проще всего асмом, благо паскаль это позваляет. Вот некоторые функции для работы с принтером: INT 17h, АН = 00 — Вывести символ в принтер Ввод: АН = 00h AL = символ DX = номер параллельного порта (00 — LPT1, 01 — LPT2, 02 — LPT3) Вывод: АН = состояние принтера: бит 7: принтер не занят бит 6: подтверждение бит 5: нет бумаги бит 4: принтер в состоянии on-line бит 3: ошибка ввода-вывода бит 0: тайм-аут INT 17h, АН = 01 — Выполнить аппаратный сброс принтера Ввод: АН = 01h DX = номер порта (00h — 02h) Вывод: АН = состояние принтера
INT 17h, AH = 02 — Получить состояние принтера Ввод: АН = 02h DX = номер порта (00h – 02h) Вывод: АН = состояние принтера
или если хочешзаняться
этим на уровне портов ввода вывода: 0278h для записи — порт данных. Чтение и запись в этот порт приводят к приему или посылке байта в принтер или другое присоединенное устройство. 0279h для чтения — порт состояния бит 7: принтер занят, находится в off line или произошла ошибка бит 6: нет подтверждения (1 — принтер не готов к приему следующего байта) бит 5: нет бумаги бит 4: принтер в режиме on line бит 3: нет ошибок бит 2: IRQ не произошло биты 1 – 0: 0 027Ah для чтения и записи — порт управления бит 5: включить двунаправленный обмен данными (этот режим не поддерживается BIOS) бит 4: включить генерацию аппаратного прерывания (по сигналу подтверждения) бит 3: установить принтер в on line бит 2: 0 в этом бите инициализирует принтер бит 1: режим посылки символа LF (0Ah) после каждого CR (0Dh) бит 0: линия STROBE всё
что я тебе здесь выложил взято из книги Зубкова, если надо отошлю.
Ответ отправлен: 04.06.2003, 11:07 Отправитель: Tibor Отвечает Tigran K. Kalaidjian
Доброе время суток, filat! вывод: Port[MemW[$0040:$0008]]:=data; Ввод: data:=Port[MemW[$0040:$0008]+1]; Это работает под DOS, Win9598. Под NT2000 не всё так просто... Если Вас интересует подробная информация - пишите на kalaidjian@pochtamt.ru - всё разъясню. Ответ отправлен: 05.06.2003, 09:00 Отправитель: Tigran K. Kalaidjian Отвечает Bill
Добрый день, filat! Не ясно, что Вы имеете в виду: Использовать для ввода - вывода информации (не печать)? Просто печать? Получение сведений о состоянии?
Ответ отправлен: 03.06.2003, 16:11 Отправитель: Bill Отвечает DoS@
Здравствуйте, filat! Могу сказать, как распечатывать текст! Смотри приложение! А можешь работать через системное прерывание!
Приложение: Ответ отправлен: 03.06.2003, 16:46 Отправитель: DoS@ Отвечает Tancho
Приветствую Вас, filat! Если Вы имеете ввиду вывод текст на принтере из программу на Pascal'е то смотри Приложение там самая маленькая прога для примере! А если Вы имеете ввиду как подать управляющий сигнал в LPT порт из программу на Pascal'e то смотри в архив рассылки ответов на вопроса №125 к эту я не могу добавить больше!
Приложение: Ответ отправлен: 03.06.2003, 19:53 Отправитель: Tancho
Вопрос № 272
Здравствуйте Tigran K. Kalaidjian ! Я заменил строчки: a := port[$37F] ; {Опрос порта} WriteLn (a) ; {Вывод на экран состояние порта} на Writeln(Port[MemW[$0040:$0008]+1]); На моем компе прога выдала число 255, но при подаче сигнала в LPT порт число не изменилось. Сигнал я подаю, замыкая соответствующую "ногу" с общим.
Добрый день, Константин! Поменяйте режим на NORMAL, вместо EPP. Не знаю почему, но EPP(у меня по крайней мере) выдаёт непредсказуемые результаты(компьютер зависает при закорачивании 11-й ноги на время "закорота"). И вообще странно, ведь если к LPT-порту не подключено никаких устройств, то на входе должно быть число 120(или 121), но никак не 255, т.к. вход BUSY инвертированный и должен отличаться от других входов. Буду думать над этой загадкой, а Вы уточните пару вопросов: сколько у Вас LPT-портов в системе и какая у Вас ОС. Ответ отправлен: 04.06.2003, 17:27 Отправитель: Tigran K. Kalaidjian
Форма отправки вопроса
Внимание!
Мы рекомендуем открывать рассылку в программе Internet Explorer 5.0+
или отправлять вопросы с сайта по адресу:
http://rusfaq.ru/cgi-bin/Message.cgi.