Cómo imprimir la imagen de 13 de pantalla VGA para la impresora Epson

Seleccione idioma Seleccione idioma
Id. de artículo: 51860 - Ver los productos a los que se aplica este artículo
Este artículo se ha archivado. Se ofrece "tal cual" y no se volverá a actualizar.
Expandir todo | Contraer todo

En esta página

Resumen

El programa enumera a continuación muestra un método de impresión impresora de imágenes para un Epson (o compatible) 13 de pantalla VGA con capacidad de gráficos.

Esta información se aplica a las versiones de Microsoft QuickBasic 4.00, 4.00b y 4.50 para MS-DOS, a versiones de Microsoft Basic Compiler 6,00 y 6.00b para MS-DOS y a las versiones de Microsoft Basic PDS (sistema de desarrollo de Professional) 7.00 y 7.10 para MS-DOS. (Las versiones anteriores no admiten 13 de pantalla VGA).

Más información

Si tiene una impresora distinta compatible Epson, debe cambiar los códigos de control de impresora que utiliza en el siguiente programa para establecer el interlineado y el modo de gráficos. Códigos de control pueden encontrarse en el manual de la impresora.

La rutina debajo para modo de pantalla VGA impresión 13 es necesaria sólo si no están ejecutando en las versiones de MS-DOS 4.00 o posteriores. En MS-DOS 4.00 o posterior, el programa Graphics.com admite todos los modos EGA y pantalla VGA estándar. Por lo tanto, la rutina dado en un artículo independiente (parte de esta nota de aplicación) para imprimir los modos de pantalla de CGA puede utilizarse para imprimir EGA y pantallas de VGA en 4.00 de MS-DOS y versiones posteriores.

Imprimir el modo de pantalla VGA 13

El método utilizado en el siguiente programa imprime la imagen lateralmente, que evita la necesidad de realizar cualquier desplazamiento de bits y utiliza un modelo de sombreado de ocho puntos por píxeles simple para representar distintos colores.

Para generar modelos diferentes para distintos colores, se debe analizar cada byte de información de píxeles. En la pantalla 13, cada píxel se representa mediante 1 byte contiguo de información, permitiendo así a 256 colores por píxel. Dado que se activan 8 clavijas de impresora para cada píxel, se realizará una asignación directa del byte de píxeles para las patillas de impresora para activarse.

Como se indicó antes, se activan 8 clavijas para cada píxel; se activan las patillas en un modelo de 2 por 4. Puesto que no es cuadrado, se produce distorsión de la imagen ligera.

La impresora Epson puede desencadenar hasta ocho patillas por byte de gráficos enviados. Por lo tanto, moviéndose de izquierda a derecha, un bucle que lee datos de la pantalla de la parte inferior de la pantalla hacia arriba tener acceso a ocho verticales columnas a la vez. Este comportamiento coincide con la impresora desencadenando ocho patillas a la vez y crea ocho columnas horizontales en la página, activar la copia impresa de lado.
  DECLARE SUB VGAtoEpson (f$, flip%)

   '--- VGAEPSON.BAS
   '--- Demonstrates the use of VGAtoEpson, a subprogram that
   '--- dumps a SCREEN 13 image to an Epson printer.
   '--- Copyright (c) 1988 Microsoft Corp.
   REM $INCLUDE: 'QB.BI'

   DIM SHARED inregs AS regtype
   DIM SHARED outregs AS regtype

   SCREEN 13
   '--- Draw picture on screen
   xmax% = 319
   ymax% = 199
   halfx% = xmax% / 2
   halfy% = ymax% / 2
   x% = halfx%
   c% = 1
   FOR y% = ymax% TO halfy% STEP -2
     LINE (halfx%, y%)-(x%, halfy%), c%
     LINE (x%, ymax%)-(xmax%, y%), c% + 20
     LINE (halfx%, (ymax% - y%))-(x%, halfy%), c% + 40
     LINE (x%, 0)-(xmax%, (ymax% - y%)), c% + 60
     LINE (halfx% + 1, y%)-((xmax% - x%), halfy%), c% + 80
     LINE ((xmax% - x%), ymax%)-(0, y%), c% + 100
     LINE (halfx%, (ymax% - y%))-((xmax% - x%), halfy% + 1), c% + 120
     LINE ((xmax% - x%), 0)-(0, (ymax% - y%)), c% + 140
     x% = x% + (((xmax% + 1) / (ymax% + 1)) * 5)
     c% = c% + 1
   NEXT y%

   CALL VGAtoEpson("LPT1", 1)
   SCREEN 0
   END

   SUB VGAtoEpson (f$, flip%) STATIC
   '--- Sends the image on SCREEN 13 to an Epson graphics printer
   '--- Parameters:
   '         f$    -   Name of file or device to send image to
   '         flip% -   Invert flag (0 = normal, not 0 = invert)

     OPEN f$ FOR BINARY AS 1         'Open the output file
     WIDTH #1, 255
     esc$ = CHR$(27)
     line$ = esc$ + "A" + CHR$(8)
     PUT #1, , line$   'set printer to 8/72 lpi
     DEF SEG = &HA000                'Start of VGA screen memory
     '--- This loop is the horizontal byte location
     FOR Col% = 0 TO 79
        '--- Set the printer to receive 800 bytes of graphics data
        line$ = esc$ + "L" + MKI$(800)
        PUT #1, , line$  '(for init)

        '--- This loop is the vertical byte position
        FOR row% = 199 TO 0 STEP -1

           place& = row% * 320&
           place& = place& + Col% * 4
           ' 4 bytes of pixel information are read in. Each
           '  of these bytes is broken up across 4 variables
           '  that are used to fire the printer pins. 2 bits
           '  from each pixel byte are stored to each of the
           '  variables.
           mem1% = 0           ' Initialize storage bytes for
           mem2% = 0           '   color information.
           mem3% = 0
           mem4% = 0
           FOR byte% = 0 TO 3
              newplace& = place& + byte%
              shift% = 2 ^ ((7 - 2 * byte%) - 1)
              mem% = PEEK(newplace&)
              mem% = mem% AND 3
              mem% = mem% * shift%
              mem1% = mem1% OR mem%

              mem% = PEEK(newplace&)
              mem% = (mem% AND 12) / 4
              mem% = mem% * shift%
              mem2% = mem2% OR mem%

              mem% = PEEK(newplace&)
              mem% = (mem% AND 48) / 16
              mem% = mem% * shift%
              mem3% = mem3% OR mem%

              mem% = PEEK(newplace&)
              mem% = (mem% AND 192) / 64
              mem% = mem% * shift%
              mem4% = mem4% OR mem%
           NEXT

           '--- Flip the byte, if called from
           IF flip% <> 0 THEN
              mem1% = 255 - mem1%
              mem2% = 255 - mem2%
              mem3% = 255 - mem3%
              mem4% = 255 - mem4%
           END IF

           '--- Send bytes to device
           line$ = CHR$(mem1%) + CHR$(mem2%)

           line$ = line$ + CHR$(mem3%) + CHR$(mem4%)
           PUT #1, , line$
        NEXT
        line$ = CHR$(13) + CHR$(10)
        PUT #1, , line$
     NEXT
     ResetPrn$ = esc$ + "@"
     PUT #1, , ResetPrn$  ' Reset printer
     line$ = CHR$(12)
     PUT #1, , line$      ' Send formfeed (page eject)
     CLOSE 1              ' All done
   END SUB
				

Referencias

En este artículo forma parte de una colección de artículos que explican cómo imprimir pantallas de vídeo básicas para las impresoras Epson. Encontrar toda la colección consultando en Knowledge Base utilizando las palabras siguientes:
Epson print y pantalla y QuickBasic
Si desea más información acerca de la memoria de gráficos y los distintos modos gráficos, consulte el libro siguiente, que está disponible en librerías o llamando a Microsoft Press al (800) 888-3303 o al (425) 882-8661:
"Guía para PC y sistemas de vídeo de PS/2, es programador" por Richard Wilton (publicado por Microsoft Press, 1987)

Propiedades

Id. de artículo: 51860 - Última revisión: lunes, 03 de febrero de 2014 - Versión: 1.3
La información de este artículo se refiere a:
  • Microsoft QuickBasic 4.0
  • Microsoft QuickBASIC 4.0b
  • Microsoft QuickBasic 4.5 para MS-DOS
  • Microsoft BASIC Compiler 6.0
  • Microsoft BASIC Compiler 6.0b
  • Microsoft BASIC Professional Development System 7.0
  • Microsoft BASIC Professional Development System 7.1
Palabras clave: 
kbnosurvey kbarchive kbmt KB51860 KbMtes
Traducción automática
IMPORTANTE: Este artículo ha sido traducido por un software de traducción automática de Microsoft (http://support.microsoft.com/gp/mtdetails) en lugar de un traductor humano. Microsoft le ofrece artículos traducidos por un traductor humano y artículos traducidos automáticamente para que tenga acceso en su propio idioma a todos los artículos de nuestra base de conocimientos (Knowledge Base). Sin embargo, los artículos traducidos automáticamente pueden contener errores en el vocabulario, la sintaxis o la gramática, como los que un extranjero podría cometer al hablar el idioma. Microsoft no se hace responsable de cualquier imprecisión, error o daño ocasionado por una mala traducción del contenido o como consecuencia de su utilización por nuestros clientes. Microsoft suele actualizar el software de traducción frecuentemente.
Haga clic aquí para ver el artículo original (en inglés): 51860

Enviar comentarios

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com