TEMA 2.8
IMPRESIÓN

Todo programa de gestión que se precie debe ser capaz de generar listados o informes y poderlos sacar por la impresora. Esta operación en QBasic es sencilla. Basta con enviar lo que queremos imprimir línea por línea a la impresora con la instrucción LPRINT de la misma forma que hemos venido usando la instrucción PRINT. Vamos con un ejemplo.

LPRINT "PRUEBA DE IMPRESIÓN DESDE QBASIC"
LPRINT "===================================="
LPRINT "Hoy es "; DATE$; " y son las "; TIME$
LPRINT "La raíz de 256 es"; SQR(256)

El resultado sería que obtendríamos por impresora un papel con algo parecido a lo siguiente:


PRUEBA DE IMPRESIÓN DESDE QBASIC
====================================
Hoy es 08/02/ y son las 16:42:05
La raíz de 256 es 16


Si queremos imprimir en posiciones específicas, como por ejemplo para rellenar los casilleros de un recibo, tendremos que ajustar las posiciones imprimiendo líneas en blanco (Usando LPRINT sin argumentos) y metiendo espacios entre las palabras. Lo importante es recordar que siempre se empieza en la parte superior izquierda del papel y se avanza línea por línea hacia abajo. No podemos saltar hacia atrás ya que el papel nunca corre para atrás dentro de la impresora.

Hasta aquí todo muy bonito, pero ahora vienen los problemas.

El primer problema es que en este proceso se pueden dar una gran variedad de errores que hagan que nuestro programa quede detenido, por lo que habrá que hacer un control de errores similar al que hacemos en los procesos de manejo de ficheros.

Los errores que pueden ocurrir pueden ir desde que ni siquiera el usuario tenga impresora, que esta esté apagada o desconectada del ordenador, que no tenga papel o que haya algún fallo durante la transmisión de los datos. Estos errores vienen identificados cada uno con su código y se manejan con una estructura similar a la que vimos para el caso de los ficheros. Algunos de los códigos de error más comunes relacionados con la impresión son los siguientes:

Código de errorDescripción
24Límite de tiempo en dispositivo
25Fallo en dispositivo
57Error en dispositivo de entrada/salida
68Dispositivo no disponible
69Desbordamiento del búfer de comunicaciones
70Permiso denegado

El trabajo con las impresoras es extremadamente complicado debido a que existen gran cantidad de controladores de impresión distintos, por lo que puede que aunque nuestro programa funcione bien y no se produzca ningún error, el trabajo no se llegue a imprimir por culpa de conflictos con el controlador o con el sistema operativo.

QBasic en particular y los programas para MS-DOS en general tienen muchas limitaciones para imprimir. En nuestro caso solo imprimiremos a través de la impresora que esté conectada al primer puerto paralelo de nuestro ordenador (LPT1), por lo tanto si tenemos una impresora USB o bien una conectada a otro equipo de la red local, en principio ya no podemos imprimir desde QBasic. Se podría conseguir instalando una serie de controladores y programas especiales que hagan operaciones como redireccionar los puertos, cosa que puede que no merezca la pena si solo usamos QBasic para aprender a programar.

Otro problema es la tipografía y el tamaño de letra a utilizar. En todo caso se usará la que tenga por defecto la impresora que será normalmente algún tipo Courier de ancho fijo y con un tamaño como para que quepan 80 caracteres por línea.
En las impresoras antiguas se puede cambiar este tipo de letra tocando determinados botones o moviendo algunos conmutadores internos.

Nuestro programa podría llegar a cambiar esto, así como usar negritas, cursivas y pocos efectos mas insertando determinados códigos de caracteres especiales entre las palabras de nuestras instrucciones LPRINT, pero esto sería específico para cada modelo de impresora. Estos códigos de control o secuencias de escape vendrán detallados en el manual de la impresora (o no), pero no conviene usarlos a no ser que estemos haciendo un programa específico para ella, ya que con toda seguridad no van a funcionar en otra impresora de otro tipo.

Si la impresión de textos es complicada, la impresión de gráficos ya es poco menos que imposible. Siguiendo detalladamente las instrucciones que vengan en el manual de la impresora, si es que vienen, el proceso consistiría básicamente en tratar a la impresora como si fuera un fichero de acceso directo, abriéndola con una orden de tipo...

OPEN LPT1 FOR OUTPUT AS #1

Y escribiendo en dicho fichero los códigos de control adecuados junto con la información de los pixels que forman la imagen en formato binario, vamos, un lío muy grande. Y encima todo en blanco y negro.

Visto esto se puede comprobar que imprimir desde QBasic es bastante entretenido, y todo para conseguir unos resultados muy pobres y poco innovadores a la hora de aprender a programar (Es igual que usar instrucciones PRINT). También hay que tener en cuenta que cada prueba que hagamos conlleva el gasto de una hoja de papel y de tinta, mientras que en la pantalla podemos escribir todas las veces que queramos de forma totalmente gratuita.
Si a esto añadimos que al usar QBasic en Windows con las actuales impresoras USB se ha perdido completamente la compatibilidad y que en Visual Basic y otros lenguajes modernos el proceso de impresión es bastante distinto comprendemos fácilmente que no nos merece la pena preocuparnos demasiado de aprender a imprimir desde los programas de QBasic.













CuRSo De iNTRoDuCCióN a La PRoGRaMaCióN CoN QBaSiC
© 2004 Juan M. González