Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

RusFAQ.ru: Программирование на языке Pascal


Информационный Канал Subscribe.Ru


RusFAQ.ru: Программирование на языке Pascal

Выпуск № 156
от 07.06.2003, 03:00

Администратор:
Имя: Sensey
URL: Информационный ресурс
ICQ: 105679124
Украина, Харьков
О рассылке:
Задано вопросов: 278
Отправлено ответов: 975
Активность: 350.7 %
[Задать вопрос >>][Регистрация эксперта >>]
[Поиск в базе][Обсудить на форуме]


 Список экспертов, ответы которых опубликованы в данном выпуске

Дмитрий
Статус: Опытный
Общий рейтинг: 152.57
[Подробней >>]
Tibor
Статус: Начальный
Общий рейтинг: 158.33
[Подробней >>]
Tigran K. Kalaidjian
Статус: Опытный
Общий рейтинг: 117.5
URL: Методы оптимизации работы ПК
[Подробней >>]
 
Bill
Статус: Доверительный
Общий рейтинг: 181.35
[Подробней >>]
DoS@
Статус: Доверительный
Общий рейтинг: 128.2
[Подробней >>]
Tancho
Статус: Опытный
Общий рейтинг: 152.91
[Подробней >>]


 Краткий перечень вопросов

Вопрос № 271. как управлять LPT портом на паскале?... (ответов: 6)
Вопрос № 272. Здравствуйте Tigran K. Kalaidjian ! Я заменил строчки: a := port[$37F] ; {Опрос порта} WriteLn (a) ;... (ответов: 1)

Вопросов: 2, ответов: 7


 Вопрос № 271

как управлять LPT портом на паскале?



Вопрос отправлен: 03.06.2003, 15:38
Отправитель: filat

[Следующий вопрос >>] [Список вопросов]

Отвечает Дмитрий

Приветствую Вас, 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 порт число не изменилось. Сигнал я подаю, замыкая соответствующую "ногу" с общим.



Вопрос отправлен: 03.06.2003, 23:21
Отправитель: Константин

[Следующий вопрос >>] [Список вопросов]

Отвечает Tigran K. Kalaidjian

Добрый день, Константин!
Поменяйте режим на 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.

(C) 2002-2003 Команда RusFAQ.ru.

 Персональные данные

Ваше имя:

Ваш e-mail:

Опубликовать мой e-mail в рассылке


 Вопрос и дополнение

Ваш вопрос:


Приложение (если необходимо):


Получить ответов:


 Выбор рассылки

Программисту
Assembler (35)
C / C++ (29)
Perl (6)
Builder / Delphi (17)
Pascal (29)
Basic / VBA (11)
Java / JavaScript (11)
PHP (7)
MySQL / MSSQL (6)
Пользователю
Windows 95/98/Me (37)
Windows NT/2000/XP (32)
"Железо" (26)
Поиск информации (14)
Администратору
Windows NT/2000/XP (14)
Linux / Unix (8)
Юристу
Гражданское право (5)
Семейное право (2)
Трудовое право (3)
КоАП (3)

Отправить вопрос всем экспертам выбранной рассылки.




Задать вопрос | Регистрация эксперта | Поиск в базе | Чат | Форумы | Новости
Проект экспертов RusFAQ.ru | Фотоальбом | Virus.RusFAQ.ru | Администрирование


Яндекс цитирования
© 2001-2003 Россия, Москва. Авторское право: Калашников О.А.

http://subscribe.ru/
E-mail: ask@subscribe.ru
Отписаться
Убрать рекламу

В избранное