Impresora fiscal EPSON TM-T88IV

1,094 views
Skip to first unread message

Angel Dario Rodriguez

unread,
Jul 17, 2013, 9:52:16 PM7/17/13
to publice...@googlegroups.com
Buenas amigos.
Por fin pude trabajar con la impresora fiscal EPSON TM-T88IV, pero ocurre un inconveniente. Ya le envio los comandos y los strings de datos y los acepta sin reportarme errores. El inconveniente readica en que después que me imprime el encabezado, le envio los comandos y strings con los datos de los ítems a ser facturados y la impresora no reacciona, tampoco me retorna error, asi que el método AddDataField del OCX (EPSONFPHOSTCONTROIX.OCX) que controla la impresora, le puse una parada para ver los datos que estaba empaquetando y efectivamente los datos que le enviaba llegaban bien. Después que le permiti continuar imprimio y asi sucesivamente hasta imprimir el comprobante,completo. Resolvi ponerle la sentencia Wait Window timeout = .05 para ver si equetab solo y asi lo hizo,es decir con ejecutando la del comando Wait me imprimio el comprobante completo. Pero como entenderán, aso hacea la impresión sumamente lenta.
 
Que creen ustedes puede ser la causa de que no me impríma lo ítems a menos que ejecute la parada con el Wait.
 
Gracias anticipadas.
 
Angel Dario Rodríguez.

Hernandez Gabriel

unread,
Jul 18, 2013, 7:10:19 AM7/18/13
to publice...@googlegroups.com
Hola, intenta enviando el IVA asi: 0.21 o 0.105, es decir IVA/100

Saludos

Gabriel

Angel Dario Rodriguez

unread,
Jul 18, 2013, 7:40:55 AM7/18/13
to publice...@googlegroups.com
Gabriel gracias por tu amabilidad.
 
La tasa del IVA es 18%, le envio 0018, pues el campo es de 4 dígitos en longitud, y todo sigue igual.


2013/7/18 Hernandez Gabriel <flo2...@gmail.com>

Ricardo Pina

unread,
Jul 18, 2013, 8:12:04 AM7/18/13
to Grupo VFP
Hola Angel
 
Me meto, creo que Gabriel te decia poner 0.18.
 
Saludos
--
            

                   Ricardo Pina

Desarrollo y Servicios Informáticos

                  Profesionales
               www.dsip.com.ar

 

 

Fernando Maggi

unread,
Jul 18, 2013, 8:23:06 AM7/18/13
to publice...@googlegroups.com

En las Epson el Iva es numerico sin decimales, 18% se envia 1800
Saludos

Angel Dario Rodriguez

unread,
Jul 18, 2013, 12:54:36 PM7/18/13
to publice...@googlegroups.com
Gracias Fernando por tu cortesía.
 
Si le puse el 18 y me dio erro de tasa del IVA. He empezado creer que ustedes tienen razón, y que alguna manera la lectura errónea del IVA, aunque no entiendo porque si hago la parada, entonces imprime. Seguiré probando .


2013/7/18 Fernando Maggi <afpsi...@gmail.com>

Hector Kuhn

unread,
Jul 19, 2013, 4:02:53 PM7/19/13
to publicesvfoxpro
function epsonarmocmd

PARAMETERS lhayreitento

lhayreitento  = IIF(PCOUNT()<1,.f.,lhayreitento)
LOCAL lcrepuesta,lnrepFiscal,lnRepPrinter,ldebociclar,lnErrorActual

this.lnlasterror = 0
this.lconread      = ""
this.lconwrite     = ""

DO WHILE this.OEpson.state = 2  && EFP_S_Busy
ENDDO

this.epsonrespuesta = this.OEpson.sendCommand

ldebociclar = .t.
DO WHILE ldebociclar   
    loCmd.ok = .t.
    IF this.lnlasterror#0
         loCmd.ok = .f.
        DO case
            CASE this.lnlasterror = 1  && EFP_E_ComInUse
                loCmd.errorimpresora      = 1
                loCmd.textoerrorimpresora = "NO SE PUDO ABRIR EL PUERTO"
                loCmd.Cmderrorimpresora   = ""
               CASE this.lnLastError = 2  && EFP_E_InvalidCom
                loCmd.errorimpresora      = 2
                loCmd.textoerrorimpresora = "PUERTO COM "+STR(loCmd.puerto,1)+": DESCONOCIDO"
                loCmd.Cmderrorimpresora   = ""
            CASE this.lnLastError = 7  && EFP_E_MaxDataLengthReached
                loCmd.errorfiscal         = 7
                loCmd.textoerrorfiscal    = "ERROR EN PARAMETROS"
                loCmd.Cmderrorfiscal      = lOCmd.TipoCmd+" "+loCmd.textocrudo
               CASE this.lnlastError = 8  && EFP_E_InvalidDataInField                  
                loCmd.errorfiscal         = 8
                loCmd.textoerrorfiscal    = "CARACTER NO SOPORTADO POR EL CORRIENTE PROTOCOLO"
                loCmd.Cmderrorfiscal      = lOCmd.TipoCmd+" "+loCmd.textocrudo                  
               CASE this.lnlastError = 10  && EFP_E_WriteError
                loCmd.errorimpresora      = 10
                loCmd.textoerrorimpresora = "IMPRESORA DESCONECTADA O FUERA DE LINEA"
                loCmd.Cmderrorimpresora   = ""              
               CASE this.lnlastError = 12  && EFP_E_NackReceived
                loCmd.errorimpresora      = 12
                loCmd.textoerrorimpresora = "ERROR EN CONSISTENCIA DE DATOS"
                loCmd.Cmderrorimpresora   = lOCmd.TipoCmd+" "+loCmd.textocrudo
        ENDCASE
         this.epsonrespuesta = this.manejaerrorepson("LASTERROR",.F.)
        EXIT
    ENDIF
     
    lnrepFiscal  = this.OEpson.fiscalStatus   
    lnrepPrinter = this.OEpson.printerStatus
    lcrepuesta   = GetErrorFiscal(ABS(lnRepFiscal),ABS(lnRepPrinter))

    IF !lhayreitento OR (lnrepFiscal>=0 AND lnrepPrinter >=0) OR LEN(TRIM(lcrepuesta))=0
        EXIT
    ENDIF
   
    loCmd.ok = .f.
    DO case
        * avisar error desconocido
        CASE LEFT(lcrepuesta,2)="-1"
            loCmd.errorimpresora      = -1
            loCmd.textoerrorimpresora = "ERROR DE IMPRESORA DESCONOCIDO"
            loCmd.Cmderrorimpresora   = lOCmd.TipoCmd+" "+loCmd.textocrudo
            this.epsonrespuesta        = this.manejaerrorepson("STATUSPRINTER",.F.)
            EXIT        
        CASE LEFT(lcrepuesta,2)="-2"
            loCmd.errorfiscal      = -2
            loCmd.textoerrorfiscal = "ERROR FISCAL DESCONOCIDO"
            loCmd.Cmderrorfiscal   = lOCmd.TipoCmd+" "+loCmd.textocrudo
            this.epsonrespuesta     = this.manejaerrorepson("STATUSFISCAL",.F.)       
            EXIT
        * avisar error impresor fiscal
        CASE LEFT(lcrepuesta,1)="P"
            loCmd.errorimpresora      = VAL(SUBSTR(lcrepuesta,2,2))
            loCmd.textoerrorimpresora = UPPER(SUBSTR(lcrepuesta,5))
            loCmd.Cmderrorimpresora   = lOCmd.TipoCmd+" "+loCmd.textocrudo
            lnErrorActual              = loCmd.errorimpresora
           
            * si 4 (IMPRESORA FUERA DE LINEA), lo manejo como falta de papel ya que el fiscal grabo el nro
            IF loCmd.errorimpresora=4 AND LEFT(UPPER(lOCmd.TipoCmd),17)='CERRARCOMPROBANTE'
                loCmd.errorimpresora=5
            ENDIF                     
           
            IF loCmd.errorimpresora=5 OR loCmd.errorimpresora=6
                loCmd.textoerrorimpresora = ""
                loCmd.Cmderrorimpresora   = ""
            ENDIF            
            ldebociclar         = IIF(strzero(loCmd.errorimpresora,2)$"05-06",.t.,.f.)   && 5,6 falta papel
            ldebociclar         = this.manejaerrorepson("STATUSPRINTER",ldebociclar)
            this.epsonrespuesta  = ldebociclar
            locmd.ok            = this.epsonrespuesta &&.t.
            ldebociclar         = .f. &&IIF(lnErrorActual=4 and LEFT(UPPER(lOCmd.TipoCmd),17)='CERRARCOMPROBANTE',.f.,ldebociclar)
           
        * avisar error memoria fiscal
        CASE LEFT(lcrepuesta,1)="F"
            loCmd.errorfiscal      = VAL(SUBSTR(lcrepuesta,2,2))
            loCmd.textoerrorfiscal = UPPER(SUBSTR(lcrepuesta,5))
            loCmd.Cmderrorfiscal   = lOCmd.TipoCmd+" "+loCmd.textocrudo
            ldebociclar            = this.manejaerrorepson("STATUSFISCAL",.F.)
            this.epsonrespuesta     = ldebociclar
    ENDCASE
ENDDO

RETURN this.epsonrespuesta


El 17 de julio de 2013 22:52, Angel Dario Rodriguez <angel....@gmail.com> escribió:

Angel Dario Rodriguez

unread,
Jul 19, 2013, 10:34:54 PM7/19/13
to publice...@googlegroups.com
Gracias Héctor por tu amabilidad.
 
A ve si entiendo, ese cogido que me enviaste, es una rutina para que me controle los errores que se produzcan y el programa pueda continua o para saber que ocurre ? Siendo asi , en que método debo insertarla, el Error() del Form o en el OnError() de la OCX?


2013/7/19 Hector Kuhn <hecto...@gmail.com>

Hector Kuhn

unread,
Jul 22, 2013, 8:11:56 AM7/22/13
to publicesvfoxpro
en el OnError del ocx yo pongo
this.Parent.lnlasterror = this.lastError  ( lastError ) lo devuelve el ocx

Es decir , que al ejecutar this.epsonrespuesta = this.OEpson.sendCommand, si se produce un error, se ejecuta el OnError y yo cargo en la propiedad lnlasterror (mia) para manejar el error segun el numero.

MALKASOFT ADPI: http://www.developervfp.blogspot.com/

unread,
Jul 22, 2013, 2:20:55 PM7/22/13
to publice...@googlegroups.com
Hola realmente no entiendo tu problema asumo que estas tratando de imprimir un comprobante fiscal, yo manejo EPSON TM-T88IV y la EPSON TM-T88V en la empresa tenemos como 10, imprimen todas sin ningún tipo de problema. Te dejo el numero de mi nextel 52*133750*16 y mi cel 4272778917, cualquier cosa me avisas o explícame que estas tratando de hacer.


 
Pd.: Descargate mi grilla que tiene multiples funciones como filtrar, multiseleccion, búsqueda, etc del siguiente link http://www.developervfp.blogspot.com/p/gridlibre-v35.html. Ahora también puedes bajarte mi ultima herramienta Busqueda Incremental con un TEXTBOX http://developervfp.blogspot.mx/p/busqueda-incremental-con-un-textbox.html  las herramientas viene con código fuente, ojo no hacer mal uso por favor. 


Saludos; 


Ing. Russvell Jesus Soto Gamarra 
San Juan del Rio - Queretaro - Mexico 
Nextel.: 52*133750*16
rycjesusrj @ hotmail.com
Framework Multi-conexion version 6.0 (nueva)

Reply all
Reply to author
Forward
0 new messages