none
imprimir en impresora termica

    Question

  • hola comunidad tengo una impresora epson tm-t88iv

     

    y le tengo que pasar unos comandos para que corte el papel, cambie el color, etc

     

    estuve leyendo algo de DOS, pero no entiendo mucho si alguien me puede orientar

     

    trabajo con vs 2008


    .::**~ No Use for A NamE ~**::.
    Wednesday, August 25, 2010 9:16 PM

Answers

  • bueno, ya encontre el comando pero deberas bajar el driver de la pagina de epson

    "https://www.epson-pos.com/cgi-bin/sdssm/main/down_soft_next.jsp "

    tambien trae los ejemplos para .Net y Win32 C# y VB.

    guiate por este, yo lo uso solo que la impresora que he utilizado no corta papel.

    como tambien puedes usar el OPOS, creo que te seria más facil.

    Saludos,


    No le temas a la competencia, temele a tu propia incompetencia.
    • Marked as answer by Pablokes Thursday, August 26, 2010 1:15 PM
    Wednesday, August 25, 2010 10:01 PM

All replies

  • si usas window xp porque no instalas el OPOS de epson y este tiene un comando para cortar el paperl OPOS.CutPaper(int porcentaje) te seria más facil controlarla, estube viendo el SDK para windows pero no le encuentro el Comando para cortar papel pero el OPOS si lo tiene.

    Saludos,


    No le temas a la competencia, temele a tu propia incompetencia.
    Wednesday, August 25, 2010 9:44 PM
  • mm

    pero como pasar el comando  eh hecho algo asi

     

        e.Graphics.DrawString("sdasdasdasdasd" + (char)27 + (char)1+"", new Font("Arial", 12, FontStyle.Regular), Brushes.Black, 0, 50);

     

    pero no funciona o estara mal

     

     

    uff nose que hacer :(!


    .::**~ No Use for A NamE ~**::.
    Wednesday, August 25, 2010 9:57 PM
  • ¿DOS, en cuál sentido? Digo, en DOS generalmente tu programa asumía el papel de driver (era quien le proporcionaba la "raw data" a la impresora, en la forma esperada).

    En windows la única función que conozco que te deja hacer el papel de driver es WritePrinter(). Si conoces el lenguaje de la impresora o sus comandos, puedes enviarlos a su spooler a través esta función.

    Wednesday, August 25, 2010 9:57 PM
  • bueno, ya encontre el comando pero deberas bajar el driver de la pagina de epson

    "https://www.epson-pos.com/cgi-bin/sdssm/main/down_soft_next.jsp "

    tambien trae los ejemplos para .Net y Win32 C# y VB.

    guiate por este, yo lo uso solo que la impresora que he utilizado no corta papel.

    como tambien puedes usar el OPOS, creo que te seria más facil.

    Saludos,


    No le temas a la competencia, temele a tu propia incompetencia.
    • Marked as answer by Pablokes Thursday, August 26, 2010 1:15 PM
    Wednesday, August 25, 2010 10:01 PM
  • Muchas Gracias por responder

     

    estoy bajando un opos para .net

     

    pero que es opos no entiendo su significado..

     

    Desde ya muchas gracias!


    .::**~ No Use for A NamE ~**::.
    Thursday, August 26, 2010 1:17 PM
  • http://en.wikipedia.org/wiki/OPOS
    No le temas a la competencia, temele a tu propia incompetencia.
    Thursday, August 26, 2010 1:43 PM
  • instale todo y no mefunciono los ejemplos.. como que no reconoce la impresora

     

     

    es usb... y por soporte me enviaron esto, ya que quiero imprimir en color rojo..

     

    Selecciona el color.
    n=0 Negro
    n=1 Rojo
    Para comprobar el funcionamiento
    podemos ejecutar desde c:\dos\qbasic el
    ejemplo:
    lprint chr$(27); “ r ” ; chr$(1); “HOLA”;
    La impresora imprimirá HOLA en rojo

     

    ESC r n 114 72

     

     

    no entiendo como pasar eso a codigo c#

     

    asi como lo estoy imprimiendo no debiese ser asi??

    con drawString?


    .::**~ No Use for A NamE ~**::.
    Thursday, August 26, 2010 2:34 PM
  • no veo la necesidad de hacerlo con comandos de DOS si estas en ambiente windows.

    no se si utilizas algun generador de reportes o lo estas haciendo manual, pero lo que quieras que te aparesca en rojo solo indicarle en la linea normal con codigo de C# que lo quieres en rojo.

    no veas los comandos de DOS si estas en windows, te lo menciono porque yo no uso comandos de DOS para nada y no tengo ningun tipo de problemas y eso que he utilizado EPSON y BIXOLON.

    Saludos,


    No le temas a la competencia, temele a tu propia incompetencia.
    Thursday, August 26, 2010 2:54 PM
  • y con c # comoo le envias comando de escape a la impresora? ej salto de linea, etc??

     

    como nose como imprimir de otra forma desde c# pero con una impresora usb.. y ahi mandarle los comando ej: (CHAR)27 == color rojo


    .::**~ No Use for A NamE ~**::.
    Thursday, August 26, 2010 3:01 PM
  • si estas usando PrintDocument:

    ' Print the slip text
    e.Graphics.DrawString("Print credit card sales slip", printFont, Brushes.Read , x, y)

    yo no lo hago con PrintDocument ni con Crystal Report, pero este es una linea de ejemplo de los mismos ejemplos que tiene el Driver, si ya lo instalastes entonces podras accesar a ellos

     

    Saludos,

     

     

     


    No le temas a la competencia, temele a tu propia incompetencia.
    Thursday, August 26, 2010 3:07 PM
  • sii eso tengo pero solo funciona el negro el rojo no funciona...

     

    y los de soporte me enviaron esto

     

    chr$(27); “ r ” ; chr$(1); “HOLA”;
    La impresora imprimirá HOLA en rojo

     

    pero eso de (Char)27 nose como enviarlo por drawString ya que este dibuja un string y lo imprime..


    .::**~ No Use for A NamE ~**::.
    Thursday, August 26, 2010 3:11 PM
  • aqui esta un ejemplo completo usando PrintDocument de los ejemplos de la ayuda.

    ' Constant variable holding the Printer name.
      Private Const PRINTER_NAME As String = "EPSON TM-U590 Slip"
    
      ' Variables/Objects.
      Private WithEvents pdPrint As PrintDocument
    
    
    cambiale el nombre de la impresora al nombre de tu impresora.

      ' The executed function when the Print button is clicked.
      Private Sub cmdPrint_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmdPrint.Click
        pdPrint = New PrintDocument
        ' Change the printer to the indicated printer
        pdPrint.PrinterSettings.PrinterName = PRINTER_NAME
    
        If pdPrint.PrinterSettings.IsValid Then
          pdPrint.DocumentName = "Testing"
          ' Start printing
          pdPrint.Print()
        Else
          MessageBox.Show("Printer is not available.", "Program05", MessageBoxButtons.OK, MessageBoxIcon.Exclamation)
        End If
      End Sub
    
    

     

      ' The event handler function when pdPrint.Print is called.<br/>
      ' This is where the actual printing of sample data to the printer is made.<br/>
      Private Sub pdPrint_Print(ByVal sender As System.Object, ByVal e As PrintPageEventArgs) Handles pdPrint.PrintPage<br/>
        Dim x As Integer = 60, y As Integer = 10, lineOffset As Integer<br/>
    <br/>
        ' Instantiate font objects used in printing.<br/>
        Dim printFont As New Font("Microsoft Sans Serif", 10) 'Substituted to FontA Font<br/>
    <br/>
        e.Graphics.PageUnit = GraphicsUnit.Point<br/>
        lineOffset = printFont.GetHeight(e.Graphics) - 2<br/>
    <br/>
        ' Print the slip text<br/>
        e.Graphics.DrawString("Print credit card sales slip", printFont, Brushes.Black, x, y)<br/>
        y += (lineOffset * 2.8)<br/>
        e.Graphics.DrawString("                 SEIKO EPSON Corp.", printFont, Brushes.Black, x, y)<br/>
        y += lineOffset<br/>
        e.Graphics.DrawString("  Thank you for coming to our shop!", printFont, Brushes.Black, x - 1, y - 1)<br/>
        y += (lineOffset * 5.5)<br/>
        e.Graphics.DrawString("Date November 2007.10.23", printFont, Brushes.Black, x, y)<br/>
        y += lineOffset<br/>
        e.Graphics.DrawString("Time   15:00    Cashier  ABCDEF", printFont, Brushes.Black, x, y)<br/>
        y += lineOffset<br/>
        e.Graphics.DrawString("Number of the register  0001", printFont, Brushes.Black, x, y)<br/>
        y += (lineOffset * 3)<br/>
        e.Graphics.DrawString("Details                Cost", printFont, Brushes.Black, x, y)<br/>
        y += lineOffset<br/>
        e.Graphics.DrawString("Cardigan             $100.00", printFont, Brushes.Black, x, y)<br/>
        y += lineOffset<br/>
        e.Graphics.DrawString("Shoes                $ 70.00", printFont, Brushes.Black, x, y)<br/>
        y += lineOffset<br/>
        e.Graphics.DrawString("Hat                  $ 30.00", printFont, Brushes.Black, x, y)<br/>
        y += lineOffset<br/>
        e.Graphics.DrawString("Bag                 $150.00", printFont, Brushes.Black, x, y)<br/>
        y += lineOffset<br/>
        e.Graphics.DrawString("       Excluded Tax $350.00", printFont, Brushes.Black, x, y)<br/>
        y += lineOffset<br/>
        e.Graphics.DrawString("          Tax (5%)   $ 17.50", printFont, Brushes.Black, x, y)<br/>
        y += lineOffset<br/>
        e.Graphics.DrawString("              ------------------", printFont, Brushes.Black, x, y)<br/>
    <br/>
        printFont = New Font("Microsoft Sans Serif", 19)<br/>
        lineOffset = printFont.GetHeight(e.Graphics)<br/>
        y += lineOffset<br/>
        e.Graphics.DrawString("  Total $376.50", printFont, Brushes.Black, x, y - 18)<br/>
    <br/>
        printFont = New Font("Microsoft Sans Serif", 10)<br/>
        lineOffset = printFont.GetHeight(e.Graphics)<br/>
        y += (lineOffset * 2.2)<br/>
        e.Graphics.DrawString("Company Name     EPSON-CARD", printFont, Brushes.Black, x, y)<br/>
        y = y + lineOffset<br/>
        e.Graphics.DrawString("Membership No.     XXXXXXXXXXX", printFont, Brushes.Black, x, y)<br/>
        y = y + lineOffset<br/>
        e.Graphics.DrawString("Valid Date         12/05", printFont, Brushes.Black, x, y)<br/>
        y = y + lineOffset<br/>
        e.Graphics.DrawString("Handling No.       9999-999999", printFont, Brushes.Black, x, y)<br/>
        y = y + lineOffset<br/>
        e.Graphics.DrawString("Approval No.       99", printFont, Brushes.Black, x, y)<br/>
        y += (lineOffset * 6)<br/>
        e.Graphics.DrawString("Signature", printFont, Brushes.Black, x, y)<br/>
    <br/>
        e.HasMorePages = False<br/>
      End Sub<br/>
    
    

    no encontre ejemplo en C# pero creo que la traducción es simple.

    Saludos,


    No le temas a la competencia, temele a tu propia incompetencia.
    Thursday, August 26, 2010 3:12 PM
  • Muchas Gracias por la respuesta, tengo lo mismo.. pero aun asi no veo y consigo ver como enviarle el (char)27

     

    porque yo tengo este ejemplo

     

    Ejemplo de puerto SERIAL

    Te anexo un ejemplo a travez de puerto serial, es en VB6

    Private Sub CmdImpSerial_Click()     ' Nombre del boton
    
    MSComm1.PortOpen = True       ' abre puerto serial
    
    MSComm1.Output = Chr$(27) + Chr$(64)     ' inicializa la impresora
    
    MSComm1.Output = Chr$(27) + Chr$(33) + Chr$(0) ' selecciona el tipo de font
    MSComm1.Output = "Hola Mundo" & vbCrLf    ' envia la cadena y hace un retorno de carro y avance de linea
    
    MSComm1.Output = Chr$(27) + Chr$(33) + Chr$(1)  ' selecciona el tipo de font
    MSComm1.Output = "Hello World" & vbCrLf    ' envia la cadena y hace un retorno de carro y avance de linea
    
    MSComm1.Output = vbCrLf        ' hace un retorno de carro y avance de linea
    MSComm1.Output = vbCrLf        ' hace un retorno de carro y avance de linea
    MSComm1.Output = vbCrLf        ' hace un retorno de carro y avance de linea
    MSComm1.Output = vbCrLf
    MSComm1.Output = vbCrLf
    MSComm1.Output = vbCrLf
    
    MSComm1.Output = Chr$(29) + Chr$(86) + Chr$(1)  ' realiza corte de papel
    
    MSComm1.PortOpen = False      ' cierra puerto serial
    
    End Sub
    

     

    algo asi tengo q buscar pero esto es para serial yo tengo usb


    .::**~ No Use for A NamE ~**::.
    Thursday, August 26, 2010 3:21 PM
  • ok, tu estas programando en .Net, ok, segun veo ese ejemplo estas abriendo el puerto y enviando los comandos al puerto serial y lo que este conectado al puerto serial lo interpretara y los ejecutara...

    si la impresora ya esta instalada y configurada en el windows entonces.

    solo en un formulario agrega un boton para imprimir y el codigo de este seria:

     

          PrintDocument pDoc = new PrintDocument();<br/>
          pDoc.PrinterSettings.PrinterName = ""; // Nombre de la impresora segun el windows.<br/>
          pDoc.PrintPage += new PrintPageEventHandler(pDoc_PrintPage);<br/>
          pDoc.Print();<br/>
    
    

    y el EventHandle al imprimir seria:

        void pDoc_PrintPage(object sender, PrintPageEventArgs e)<br/>
        {<br/>
          float x = 60, y = 10;<br/>
          float lineOffSet = 0;<br/>
          Font pFont = new Font("Arial", 10f, FontStyle.Regular, GraphicsUnit.Point);<br/>
          lineOffSet = pFont.GetHeight(e.Graphics);<br/>
          <br/>
          e.Graphics.DrawString("Hola mundo", pFont, Brushes.Black, x, y);<br/>
          y += lineOffSet;<br/>
          e.Graphics.DrawString("Imprimiendo desde C# .Net en ROJO", pFont, Brushes.Red, x, y);<br/>
          e.HasMorePages = false;<br/>
        }<br/>
    
    

    no necesitarias abrir ningun puerto ni nada porque la impresora ya deberia de estar instalada en windows ya se en puerto LPT1 o en Puerto USB o en el COM1, no importa porque ya esta instalada.

    si la impresora no esta instalada entonces INSTALALA con el driver que bajastes, porque hasta donde se, estas impresoras no vienen con el driver hay que bajarlo de la pagina de EPSON.

     


    No le temas a la competencia, temele a tu propia incompetencia.
    Thursday, August 26, 2010 3:39 PM
  • siii me funciona a la perfeccion ese codigo!!! :D

     

    pero el

    "Imprimiendo desde C# .Net en ROJO"
    
    
    

    no aparece :(! por eso digo que quizas para decirle a la impresora que ese texto es rojo poner

    chr$(27); “ r ” ; chr$(1); ---> ese comando o algo asi..

     


    .::**~ No Use for A NamE ~**::.
    Thursday, August 26, 2010 3:46 PM
  • estas seguro que la impresora imprime en rojo?, confirma en las especificaciones

    No le temas a la competencia, temele a tu propia incompetencia.
    Thursday, August 26, 2010 3:52 PM
  • http://www.teopos.cl/pdf_prod/59.pdf
    .::**~ No Use for A NamE ~**::.
    Thursday, August 26, 2010 3:55 PM
  • ok, ya revisastes en las propiedades de la impresora?

    Solapa "General" boton "Printing Preferences..." aparecera otra venta.

    solapa "Main", Color: Color/Monochrome, por default esta seleccionado "Monochrome", cambialo y prueba imprimir.

    Saludos,


    No le temas a la competencia, temele a tu propia incompetencia.
    Thursday, August 26, 2010 4:07 PM
  • si tambien lo cambie y aun asi no funciona.
    .::**~ No Use for A NamE ~**::.
    Thursday, August 26, 2010 4:08 PM
  • mmmm... esta raro, en la que si te puedo confirmar que funciona como te lo he estado mencionado es en una BIXOLON pero en una EPSON no me ha dado por imprimir en rojo...

    solo queda que la devuelvas y te compres una BIXOLON mejor.


    No le temas a la competencia, temele a tu propia incompetencia.
    Thursday, August 26, 2010 4:15 PM
  • era broma, jejejejejejejeje...

    el soporte tecnico que estabas recibiendo era por CHAT o por correo?


    No le temas a la competencia, temele a tu propia incompetencia.
    Thursday, August 26, 2010 4:16 PM
  • jaja xD!

     

    por correo..

     

    la verdad que llamo y me dejan con mas duda o.O!


    .::**~ No Use for A NamE ~**::.
    Thursday, August 26, 2010 4:19 PM
  • ok, solo hay una manera de salir de dudas... pruebalo en QBasic para ver si te funciona como ellos lo mencionan.

    podemos ejecutar desde c:\dos\qbasic el
    ejemplo:
    lprint chr$(27); “ r ” ; chr$(1); “HOLA”;
    La impresora imprimirá HOLA en rojo


    creo, si no me equivoco que tendras que probar en una computadora con Win95/98 o ME

    o pruebalo desde VB6 o FoxPro

    Saludos,


    No le temas a la competencia, temele a tu propia incompetencia.
    Thursday, August 26, 2010 4:30 PM
  • que tendria q bajar¿? o instalar tengo win xp
    .::**~ No Use for A NamE ~**::.
    Thursday, August 26, 2010 4:47 PM
  • si no tienes VB6 o FoxPro, buscar en Google Qbasic para Windows XP
    No le temas a la competencia, temele a tu propia incompetencia.
    Thursday, August 26, 2010 4:52 PM
  • En el gdi tienes la función Escape(). Intenta con un PASSTHROUGH y trata la data como bytes y olvidate de los chars en el comando(¿los caracteres que estás escribiendo son short integers?) y de poner espacios ¿qué es eso?.

    La misma función te permite hacer un query al driver. O sea que puedes aprovechar a preguntarle si ese comando está implementado. Que un driver OEM no implemente alguna característica de su propio hardware, no será lo más raro que se haya visto.

    Thursday, August 26, 2010 5:09 PM
  • uuf ya no entiendo nada mejor en puro negro xD!

    .::**~ No Use for A NamE ~**::.
    Thursday, August 26, 2010 7:51 PM