No sé cómo hacer para que mi ordenador detecte si la impresora está apagada o encendida.

Hola vicre tengo problemas para trabajar con la impresora, es decir no se como hacerle para detectar si esta encendida(on line) o apagada(off line), este es mi codigo en C:
#include <dos.h>
#include <conio.h>
#include <stdio.h>
void main()
{
unsigned int Status,comp;
unsigned register c;
char CHAR='h';
clrscr();
asm {
XOR DX,DX
XOR AX,AX
MOV AH,1
MOV DX,0
MOV Status,AX
test Status,10000b
JE OK
JNE ERROR
int 17h
XOR AX,AX
MOV AH,2
MOV DX,0
int 17h
/*
MOV Status,AX
CMP Status,0x9000
JE OK
JNE EQUALS */
}
OK:
asm{
MOV AH,0
MOV DX,0
MOV AL,CHAR
int 17h
JMP SUCC_EXIT
}
ERROR:
{
printf("Error");
puts("Not Ready Printer!");
asm{
MOV AX,4C00H
int 21h
}
}
SUCC_EXIT:
{
printf("Exitosa!");
}
getch();
}
Debe de saber si esta en linea o no y avisar con un mensaje, estoy trabajando en winXP.
te agradeceria mucho tu ayuda.
gracias.

1 respuesta

Respuesta
yo usaria el comando biosprint() este tiene los siguientes parametros
int biosprint(int cmd, int abyte, int port);
y te regresa los siguientes resultados...
0x01
Printer timed out-Impresora no disponible
0x08
I/ O error -- Error E/S
0x10
Printer selected -- Impresora Seleccionada
0x20
Out of paper -- No hay papel
0x40
Acknowledge --Reconocida
0x80
Printer not busy -- Impresora no ocupada
El que dice si la impresora esta enciendoda o apagada seria un error tipo I/O
te dejo la documentacion esta en ingles espero y te sirva
biosprint
Header
Bios. H
Prototype
int biosprint(int cmd, int abyte, int port);
Description
The biosprint function performs printer functions using BIOS interrupt 0x17. The cmd argument specifies a print command; the abyte argument specifies the character to print, and the port argument specifies the port to which the printer is connected. Port numbers are zero-based. (That is, a port argument of 0 indicates LPT1; 1 indicates LPT2, and so on.)
The cmd argument specifies one of the following operations:
0
Print the character specified in the abyte argument.
1
Initialize the selected printer. Ignore abyte argument.
2
Return current printer status. Ignore abyte argument.
Return Value
The current printer status. Possible values are:
0x01
Printer timed out
0x08
I/ O error
0x10
Printer selected
0x20
Out of paper
0x40
Acknowledge
0x80
Printer not busy

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas