[ Foro de C ]

Ficheros especiales: La impresora

13-Feb-2010 20:19
Jess S.
1 Respuestas

¡Hola!
Esto va dirigido a quien tenga problemas al realizar el ejercicio Nº 61 de los apuntes, y también al profe por si le sirve para explicar un poco más el asunto.

Yo tengo una Canon MP540, conexión USB, con la que, según el propio fabricante: "Lamentablemente la impresión desde la consola de DOS no es soportado por el MP540. Las impresoras y multifuncionales corrientes solamente ofrecen el estándar de impresión GDI y solamente se conectan al ordenador por USB. Para la impresión desde DOS el dispositivo debe soportar PCL y debe ser conectado por puerto LPT."

Pero hay solución, siempre que la impresora esté en red y compartida. Así la tengo yo. En mi caso, además, está enchufada a mi ordenador. Como sabéis, si al DOS le hablas de PRN, en general piensa que le hablas de LPT1. Esto lo debes mirar tecleando MODE en la consola. Si es LPT2 o LPT3 pon lo que corresponda en vez de LPT1.

La solución es:

1.- Redirigir la LPT1 hacia nuestra impresora con el siguiente comando de consola:  NET USE LPT1: \\NOMBRE DEL ORDENADOR\NOMBRE IMPRESORA /persistent:yes.
NOMBRE ORDENADOR: Tecla Windows izquierda+Pause/Break ->Nombre de Equipo (Nombre completo de equipo).
NOMBRE IMPRESORA:Inicio->Configuración->Impresoras y faxes. Botón derecho sobre impresora. Propiedades->Compartir (Nombre del recurso compartido).

2.- Cambiar la impresora de modo RAW a TXT.
Como en NOMBRE DE IMPRESORA, Propiedades->Opciones avanzadas->Procesador de impresión, y cambiar RAW por TXT.

Para probarlo, si en la consola pongo por ejemplo: ipconfig > prn, me imprime ipconfig en la impresora.

Ahora ya se le puede llamar prn a la impresora y funciona el ejercicio 61.

Excusas por el rollo y a ver si sirve.


17-Feb-2010 01:13
Nacho Cabanes (+31)

Buena aportación, Jesús.

Aun así, ten en cuenta que se trata de un ejemplo puramente académico, porque normalmente en Windows ya no se imprime atacando el puerto directamente. Windows aporta un driver unificado de impresora, de modo que puedas dibujar en cualquier impresora de una forma sencilla, y que puedas escribir texto en impresora usando los tipos de letra de Windows.

Eso no es fácil de conseguir desde C (la programación para Windows usando sólo C es exageradamente tediosa), pero en C++ se puede usar un objeto Printer (o similar, según el compilador) que permite hacer todas esas cosas de forma sencilla.

Sobre tu solución, ten en cuenta también que puede tener efectos secundarios no deseados: el cambiar la impresora de RAW a TXT puede hacer que deje de funcionar el "imprimir a fichero" desde un ordenador para luego volcar ese fichero a impresora con otro ordenador que tiene esa impresora (pero que no tiene el programa desde el que querías imprimir). Es un caso poco habitual, pero hay que tenerlo presente.






(No se puede continuar esta discusión porque tiene más de dos meses de antigüedad. Si tienes dudas parecidas, abre un nuevo hilo.)