Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

В винде до 2000ного работал Int 17h, Работа с принтером напрямую. [D5, D7, Win2k, WinXP]


Exciter ©   (2004-10-05 14:21:00) 

В 98м и миллениуме можно было на асме посмотреть в онлане ли принтак. А как тоже самое сделать под ХР ?

Function TKassaForm.GetStatePrinter : Boolean;
var mode : byte;
begin
//проверка порта на готовность
asm
pusha
mov ah, 2
mov dx, 0 // 0=LPT1, 1=LPT2 ...
int 17h
mov mode,ah
popa
end;
if (mode<>$90) Then
raise Exception.Create('Принтер не готов.');
GetStatePrinter := True;
end;

Подскажите.


DC-AC   (2004-10-06 07:18:00) [1]

Ihor Osov'yak : не ну почему, если задача стоит _именно_ следить за линией BUSY или SELECT IN и если рогом упереться... То (например) через компонент DlPortIO, использующий свой драйвер можно обращаться напрямую к портам. Это по _методу_ получения информации.
А теперь по _результату_. Это будет работать не со всеми (даже LPT) принтерами, поскольку сейчас в моде всякие пакетные протоколы (D4,MLC,CAPT и пр.) и состояние принтера передаётся в порт в режиме ECP или Nibble и линии BUSY/SELECT IN  будут "вести себя" согласно протоколу выбранного режима.
Hint: написать "в одиночку" драйвер современного принтера "по рекомендациям Microsoft" практически нереально, это под силу лишь коллективам разработчиков в сотрудничестве с разработчиками принтерного "железа"...


Ihor Osov'yak   (2004-10-05 23:30:00) [2]

если коротко - никак. Если развернуто - см. [1] KSergey ©   (05.10.04 14:26)

Hint:  При программировании для платформы Win32 от Microsoftжелательно приcлушиваться к рекомендациям Microsoftпо программированию для платформы Win32.


DC-AC   (2004-10-05 16:24:00) [3]

Какой принтер ? К сожалению в отличие от старых матричников :-) современные принтеры могут не иметь понятие "On Line". Они могут лишь устанавливать линию ERROR на LPT (если они LPT) или если USB вообще нифига не устанавливаить, а передавать строку статуса в ответ на запрос драйвера. С EPSON-ами помогу, с другими - звиняй...


KSergey   (2004-10-05 14:26:00) [4]

Пользоваться документированными средствами.
К стати, на счет "до 2000": была еще NT4, так вот она имеет отношение к 2000, в отличие от Win9x - они не были "до". В NT4 это так же нельзя.

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


Наверх

Титульная страница Поиск, карта сайта Написать письмо