Um Infos über den Druckerstatus zu erfahren, steht einem das Interrupt 17h und das Druckerstatus-Byte zur Verfügung.
Delphi-Quellcode:
function LeseStatusByte: Byte;
asm
MOV AH, 02h
XOR DX, DX
//setzt DX-Register auf null
INT 17h
//löst Software-Interrupt für den Drucker aus(Funktion 02h-->Status-Byte des Druckers auslesen)
MOV Result, AH
//Status-Byte wird aus dem Register gesogen und einer Variablen übergeben
end;
Nun zu den einzelnen Bits und ihrer Bedeutung:
Bit 0: Time-Out/Reserviert
Bit 1+2: Reserviert
Bit 3: 1 = Ein-/Ausgabefehler
Bit 4: 1 = Drucker ist online
Bit 5: 1 = Kein Papier
Bit 6: 1 = Empfangsbestätigung
Bit 7: 1 = Drucker ist bereit
Delphi-Quellcode:
const
PM_EA_ERROR = $08;
PM_ONLINE = $10;
PM_NOPAPER = $20;
PM_ACKNOWLEDGEMENT =$40;
PM_READY = $80;
:
if(LeseStatusByte and PM_NOPAPER=PM_NOPAPER)then ShowMessage('Sorry Atze, keen Papier mehr!');
: