Pascal/Turbo Pascal - Funciones de Impresora

 
Vista:
sin imagen de perfil

Funciones de Impresora

Publicado por Gabriel (17 intervenciones) el 03/03/2012 03:14:16
Hola amigos, quiero hacer un programa para saber el estado de la impresora al momento de enviar a imprimir:

1.- Si la impresora esta Online o no lo esta ( Encendida o Apagada )
2.- Si le falta Papel
3.- Si esta Ocupada
4.- Si se le Atasco el Papel
5.- Etc....

Para esto necesito saber cuales son las funciones para el tratamiento de la impresoras y bueno su documentacion y se puede algunos ejemplos. Yo estaria muy agardecido...


Gracias.........
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

Funciones de Impresora

Publicado por ramon (2158 intervenciones) el 03/03/2012 15:42:40
Te comento la impresora manejada desde las interrupción de la bios corresponde con la
interrupción Nº 17H con las funciones Nº 00H, 01H, y 02H de la siguiente manera:

00H = Enviar carácter a la impresora;
01H = Iniciar la impresora;
02H = Preguntar estado de la impresora;

En el registro AH dependiendo del valor de sus bit tendrás las respuestas que deseas estos bit son:

128 / 64 / 32 / 16 / 8 / 4 / 2 / 1 valor del bit

7 6 5 4 3 2 1 0 bit
____________________________
| 0 | 1 | 1 | 1 | 1 | x | x | 1 | estado
-------------------------------------------------
| | | | | | | |_____ Error Timer
| | | | | | |_________ Nada
| | | | | |_____________ Nada
| | | | |________________ Error de Transmisión
| | | |____________________ Impresora On-Line
| | |________________________ Impresora sin Papel
| |____________________________ Confirmación Recepción
|_______________________________ Impresora Ocupada

Para acceder a los bit individual mente seria :
Al bit 128 AH and $80 = $80 Seria true o sea impresora ocupada.
Al bit 32 AH and $20 = $20 Impresora sin Papel.
Al bit 16 AH and $10 = $10 Impresora On_line.
Al bit 8 AH and $08 = $00 Error de Transmisión.

En pascal seria ejemplo:

Uses
Dos;
var
Regs : Registers;

Function Printer_sin_papel(Port : Byte): Boolean;
begin
Regs.AH := $02;
Regs.DX := Port;
Intr($17, Regs);
Printer_sin_papel := (Regs.AH and $20 = $20)
end;


En el registro aH la funcion
En el registro DX el Puerto donde esta la impresora {Puerto 0=LPT1, 1=LPT2, 2=LPT3 }
intr($17,regs) el numero de Interrupción.
(Regs.AH and $20 = $20) Acceso al bit numero 32 para ver síes falso o true.
Pero ten en cuenta que esto se vasa en los puertos LPT no en los USB.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

Funciones de Impresora

Publicado por Gabriel (17 intervenciones) el 03/03/2012 19:21:21
A fijate Ramon las impresoras que necesito verificar vienen en puertos USB Y SERIAL ahora casi todas vendran con puertos serial por razones del control del IVA serian impresoras tales como: BEMATHEC, EPSON ETC.. Y todas vendran con conexiones serial.

Ahora tu no sabras sin el lenguaje FREE PASCAL que lo he estado viendo y tiene una actualizacion del 2011 podra hacer esto: verificar el estado de las impresoras a travez de los puertos USB Y SERIAL, ademas de los puertos LPT que ya he visto algunas tarjetas madres nuevas que no lo traen.

Bueno voy a probar esta rutina estamos en contacto.....
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar