Cómo imprimir códigos de barras desde la aplicación VB
1. Utilice directamente la función de impresión de códigos de barras de la impresora.
Hay muchas impresoras que pueden imprimir códigos de barras directamente, pero en VB, la conocida declaración LPRINT de la era DOS ya no puede. La operación de impresión la asume completamente el sistema Windows Spool y la salida está en "páginas". La salida está en "páginas" y Windows convierte toda la salida de impresión en gráficos y la envía al controlador de impresión. Para que la impresora imprima un código de barras, se le debe enviar la secuencia ESC correspondiente directamente, por lo que debemos buscar una manera de evitar el sistema Spool de Windows, es decir, el programa no puede usar el objeto Impresora y la colección Impresoras para procesar la impresión. Bueno, hay al menos tres métodos para enviar el comando ESC directamente a la impresora en VB. Los dos primeros métodos son llamar a las funciones API de Windows: Escape() y SpoolFile(), y el tercero es el método más simple: abrir. el puerto de impresora para acceso binario, consideraremos principalmente este enfoque.
Incluso en la era de Windows, "LPT1:" y "PRN" todavía están disponibles, hagamos un experimento: abra una ventana de DOS e ingrese COPY CON LPT1: cuando se le solicite.
Luego ingrese algunos caracteres aleatorios y presione F6 y la impresora comenzará a funcionar e imprimirá los caracteres que ingresó. El siguiente código demuestra el proceso de envío de comandos y caracteres directamente a la impresora:
Private Sub Command1_Click()
Dim strOut As String
StrOut = "Esto es la cadena enviada directamente al puerto de la impresora."
' Abra el puerto de la impresora donde es posible que sea necesario cambiar "LPT1: " dependiendo de la configuración de su impresora
Abra "LPT1: " Para acceso binario, escribir como cadena
Dim strOut As String
StrOut = "Esta es la cadena enviada directamente al puerto de impresora".
' Enviar a la impresora, tenga en cuenta que el último parámetro de la declaración debe ser una variable
Pon #1, , strOut
' Cierra el puerto de la impresora
Cerrar #1
End Sub
Diferentes impresoras pueden tener diferentes instrucciones para imprimir códigos de barras. Por ejemplo, asigne la variable anterior strOut como:
strOut. = Chr(28) amplificador; Chr(5) amplificador; Chr(3) amplificador; p>CODE39 se imprimirá en la impresora AR2400 Formato "012345". Consulte el manual de la impresora para conocer comandos de control de impresión específicos.
Las desventajas de utilizar este método son: en primer lugar, depende demasiado de la propia impresora y las impresoras con capacidad de impresión de códigos de barras suelen ser más caras que las impresoras normales, lo que puede hacer que la creación de un sistema de aplicación no sea económica; , Tener que manejar toda la impresión usted mismo, por ejemplo, el posicionamiento de la impresión, es una pérdida de tiempo.
En segundo lugar, imprimir en impresoras normales mediante dibujo.
Las reglas de codificación de códigos de barras no son más que expresar unos y ceros binarios a través de espacios de diferentes anchos entre líneas, siempre que lo comprendamos. Siguiendo las reglas de codificación de códigos de barras, puede utilizar el dibujo para obtener un resultado aceptable en una impresora normal. A continuación analizamos los códigos CODE39 más utilizados.
Las reglas de codificación del código CODE39 son:
1. Cada cinco líneas representan un carácter
2.
p>
3. Un espacio amplio entre filas representa 1 y un espacio estrecho representa 0;
Cinco filas más los cuatro espacios entre ellas son de nueve bits. código binario, y Tres de estos nueve dígitos deben ser 1, por eso se llama código 39;
Hay un * al principio y al final del código de barras para identificar el principio y el final
En nuestro programa, de uso común Después de codificar todos los caracteres, interprete el grosor de la línea y luego tome el ancho del espacio, como por ejemplo:
Los caracteres en la imagen de arriba pueden se interpretará como * 001101000 y el carácter 3 se interpretará como 110000100
La siguiente es la subrutina que proporcionamos:
Nota:
1: genera el código de barras correspondiente a la cadena strBarCode a la impresora predeterminada
Private Sub PrintBarCode( _
ByVal strBarCode As String, _
Opcional ByVal intXPos As Integer = 0, _
Opcional ByVal intYPos como entero = 0, _
Opcional ByVal intPrintHeight como entero = 10, _
Opcional ByVal bolPrintText como booleano = True _
)
Nota: Descripción del parámetro:
Nota: strBarCode: la cadena de código de barras que se imprimirá
Nota: intXPos, intYPos: las coordenadas de la esquina superior izquierda del código de barras que se va a imprimir.
intXPos, intYPos: las coordenadas de la esquina superior izquierda del código de barras impreso (el valor predeterminado es (0, 0), en milímetros)
Comentario: intHeight: altura de impresión (el valor predeterminado es un centímetro, en milímetros) )
p>
Comentarios: bolPrintText: si se imprimen caracteres legibles por humanos (el valor predeterminado es verdadero)
Comentarios: "0"-"9", "0"- "9", "0"- "9", "0"-"9", "0"-"9", "0"-"9"0"-"9", "A-Z "0"-"9 Formatos de código de barras ", "A-Z", "- ","", "$" y "*", un total de *** 40 caracteres
Static strBarTable(39) As String
Comentarios: Inicializar tabla de formato de código de barras
strBarTable(0) = "001100100" Comentarios: 4
strBarTable(5) = "101000100" Comentarios: 45
strBarTable(6) = "011000100" Comentario: 6
strBarTable(7) = "000110100" Comentario: 7
strBarTable(7) = "000110100" Comentario: 7 p>
strBarTable(8) = "100100100" Comentario: 8
strBarTable(9) = "010100100" Comentario: 9
strBarTable(10) = "100010010" Comentario : 100010010A
strBarTable(11) = "010010010" Comentario: BB
strBarTable(12) = "110000010" Comentario: C
strBarTable(13) = "001010010" Comentario: D
strBarTable(14) = "101000010" Comentario: E
strBarTable(15) = "011000010" Comentario: F
strBarTable (16) = "000110010" Comentario: G
strBarTable(17) = "100100010" Comentario: H
strBarTable(18) = "010100010" Comentario: I
strBarTable(19) = " 001100010" Anotación: J
strBarTable(20) = "100010001" Anotación: K
strBarTable(21) = "010010001" Anotación: L
strBarTable( 22) = "110000001" Comentario: M
strBarTable(23) = "001010001" Comentario: N
strBarTable(24) = "101000001 " Comentario: S
strBarTable(29) = "001100001" Comentario: S
strBarTable(29) = "001100001" Comentario: TT
strBarTable(30 ) = "100011000" Comentario: U
strBarTab
le(31) = "010011000" Anotación: V
strBarTable(32) = "110001000" Anotación: W
strBarTable(33) = "001011000" Anotación: X
strBarTable(34) = "101001000" Comentario: Y <
strBarTable(35) = "011001000" Comentario: Z
strBarTable(35) = "011001000" Comentario : ZZ
strBarTable(36)="000111000 "Comentario: -
strBarTable(37) = "100101000" Comentario: Z
strBarTable(36) = "000111000" Comentario: Z
strBarTable(38) = "010101000" Comentario: $
strBarTable(39) = "001101000" Comentario:
If strBarCode = "" Luego salir del subcomentario: No imprimir cadenas vacías
Nota: Guarde la impresora. ScaleMode
Dim intOldScaleMode As ScaleModeConstants
intOldScaleMode = Impresora.
intOldDrawWidth As Integer
intOldDrawWidth = Printer.DrawWidth
Nota: Guardar impresora: Guardar fuente de impresora
Atenuar fntOldFont como StdFont
Establecer fntOldFont = Printer.Font
Printer.ScaleMode = vbTwips Nota: Establezca la escala de las coordenadas de impresión en twips (twip=1)
Printer.DrawWidth = 1 Nota: El ancho de línea es 1: El ancho de línea es 1
Printer.FontName = "Song" Nota: Fuente y tamaño de los caracteres impresos: Dim x As Integer
x = Printer.ScaleX(intXPos, vbMillimeters, vbTwips)
Nota: Convierte la coordenada X en milímetros a Tee
Dim x como entero
x = Printer.ScaleX(intXPos, vbMillimeters, vbTwips)
Nota: Convierta la coordenada X en milímetros a Tee
Dim x como entero
x = Printer.ScaleX(intXPos, vbMillimeters, vbTwips) ScaleY(intPrintHeight, vbMillimeters, vbTwips)
Nota: Si se imprimen caracteres legibles por humanos debajo del código de barras
Si bolPrintText = True Entonces
Nota: Impresión de código de barras La altura debe restarse de la altura de los caracteres siguientes
intHeight = intHeight - Printer.TextHeight(strBC)
End If
Const intWidthCU As Integer = 30 Notas: negrita y ancha Ancho del espacio
Si bolPrintText = True entonces
Const intWidthCU como entero = 30 Comentarios: ancho del espacio en negrita y ancho
Const intWidthXI como entero = 10 Comentario: delgado línea y ancho de espacio estrecho
Dim intIndex como comentario entero: índice de la cadena procesada actualmente