lunes, 7 de marzo de 2011

Imprimir un Logo en una impresora de Recibos Ithaca o compatible en el Puerto Serial o Paralelo

El hardware: Impresora Ithaca 93Plus Series 90 o cualquiera IBM compatible
Software: VS 2005 vb.net (Express deberia funcionar tambien), POSjet Color Image Converter lo pueden obtener de este link: http://transact-tech.com/tsg/90utilities.html y Printer OCX Control accesible en la misma pagina http://transact-tech.com/tsg/90utilities.html.


Esta es una tarea sencilla, solamente tenemos que tener cuidado en la configuracion del puerto serie. A continuacion los pasos.




1.- Imprimir el logo como un archivo, empleando el PosJet Color Image Converter, llamemos a este archivo C:\Logo.prn. Preste atencion en la configuracion del Puerto de Comunicacion: 9600 N 8 1 H esto es muy  importante





2.- Creamos un projecto nuevo en vb.net y agregamos una referencia al COM  Printer OCX Control
2.- Leer este archivo C:\Logo.prn como una lista de bytes y convertirlos a una cadena de caracteres
3.- Enviar  esta cadena de caracteres al puerto serial.

aqui esta el Codigo en Vb.net




Imports POSPRINTERLib

Public Class Form1

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        Dim result As Long
        Dim posPrinterObj As POSPRINTERLib.POSPrinter
        posPrinterObj = New POSPrinter()

        'Open Port
        'Atencion Aqui el puerto debe abrirse con los mismos parametros como se creo la imagen.
        result = posPrinterObj.OpenPort("COM1", "baud=9600 parity=N data=8 stop=1")
      
        result = posPrinterObj.SetHandshake(1)
        'Read file into Byte Array
        Dim strByte As Byte() = System.IO.File.ReadAllBytes("C:\Logo.prn")
        Dim data As String = ""
        Dim pieces As String = ""
        Dim index As Integer = 0
        'Take each byte in the array and convert to the character equivalent,
        'Building the string data piece by piece
        For index = 0 To (strByte.Length - 1)
            pieces = pieces + Chr(strByte(index))
        Next
        data = pieces
        'Send the data
        result = posPrinterObj.SendString(data, data.Length)
        result = posPrinterObj.ClosePort()

    End Sub

End Class

Agradecimientos al departamento de soporte tecnico de Transact Technologies Inc.

http://www.transact-tech.com/tsg/technical_support.html