Impresora FISCAL por COM1, ayuda en mejorar velocidad

Post Reply
User avatar
Adolfo
Posts: 815
Joined: Tue Oct 11, 2005 11:57 am
Location: Chile
Contact:

Impresora FISCAL por COM1, ayuda en mejorar velocidad

Post by Adolfo »

Hola a todos...

Tengo un sistema que utiliza una impresora fiscal IBM.
Hasta ahora todo me funciona de la siguiente manera. ( Comandos y estructura resumida a lo mas importante)

Code: Select all

//--------------------------------------------------------------------------- INICIALIZA
Function IF_INICIALIZA()
Local nCom
Local cDcb

      nCom:=OPENCOMM( "COM1",1024,256)

      IF nCom < 0
         MSGALERT("Error de Hardware, Reinicie el Computador","Error Comunicacion" )
         Return 0
      ENDIF

      BUILDCOMMDCB( "COM1:19200,N,8,1", @cDcb )

      IF !SETCOMMSTATE( nCom, cDcb )
         MSGALERT("Error de Hardware, Reinicie el Computador","Error Inicializacion de Puerto" )
         Return 0
      ENDIF

RETURN nCom

//---------------------------------------------------------------------------
Function TestdeImpresora()
Local nCom

      nCom:=IF_Inicializa()

      Define Dialog oDlgCom Resource "OPCION4"
          oDlgCom:bCommNotify:={|nCom,nStatus| VerificaCom(nCom,nStatus)}
          ..................codigo..................... 
      Activate Dialog oDlgCom on Init EnableCommNotification(nCom,oDlgCom:hWnd,1,-1)

      If nCom > 0
         CloseComm(nCom)
      Endif
RETURN NIL

//--------------------------------------------------------------------------- Estados Impresora
Function VerificaCom(nCom,nStatus )
Local cText:=space(7)
Local nBytes
Local cRes
      nBytes:=ReadComm(nCom,@cText)
      cRes:=IF_Errores(Substr(cText,1,3))

      If cRes<>""
         MsgAlert(cRes,"Verifique estado de la Impresora Fiscal " )
      Endif
Return .T.

//--------------------------------------------------------------------------- Envia Datos a la Impresora
FUNCTION IF_Envia( nCom, cString )
              WRITECOMM( nCom, cString )
RETURN NIL

 

Hasta ahi todo bien. puedo escribir y ver el estado de la impresora sin problemas, pero en algunas que son mas antiguas, entre cada IF_ENVIA() debo poner un syswait(0.25) para que el comando se envie correctamente. En el caso de documentos con mas de 50 productos, la cosa se pone muy lenta. funciona bien, pero es mas lento que una solucion que tenian en VISUAL BASIc que si le sacaba la velocidad maxima a esas impresoras IBM mas antiguas.
Mi problema radica en como controlo que todo llego bien al impresor una vez enviado el comando.
Urgando encontre este pedazo de PSEUDO CODIGO que entregan a los grandes desarrolladores en un manual ( yo, soy yo y mi sombra.. ja ja).
Asi que si alguno se atreve a ayudarme, tendra mi gratitud.

Este es...

Code: Select all

Envia_Comando(String comando)
String respuesta=""
Char byte=0x00
//se construye comando agregándole inicio frame(87H) y fin frame(88H)
comando=0x87+comando+0x88
// se envía al puerto RS232 byte a byte

Para i=1 hasta largo(comando)
     EscribePuerto(mid(comando,i,1))
Fin Para

// se lee desde el puerto RS232 byte a byte
  Haga_Mientras(byte <> 0x0D and byte <> 0x0C)
  {
   byte = LeePuerto() // lee byte a byte
   Si (byte==0x0A) Entonces
      Break; //ACK(el comando fue satisfactorio)
   Sino
       respuesta=respuesta+byte //se concatena hasta que llega el fin 0DH(errores,comando 35 y 48) o 0CH(comando 43 en modo descarga)
   Fin_Si
  }
  Fin_Haga_Mientras

FIN Envia_Comando
 
Cualquier cable a tierra sera bienvenido

PD : En las impresoras nuevas, si saco el Syswait(), funcionan bien rapido, pero cada cierto tiempo, se pegan , como si el buffer estuviera saturado o algo asi, como les dije, todo funciona sin problemas, pero no he podido mejorar la velocidad sin poder controlar si el comando esta correcto o nop.
He variado el tamaño del bufer hasta 8192 y na'

Saludos desde CHILE
;-) Ji,ji,ji... buena la cosa... "all you need is code"

http://www.xdata.cl - Desarrollo Inteligente
----------
Lenovo Legion Y520, 16GB Ram, 1 TB NVME M.2, 1 TB SSD, GTX 1050
User avatar
Willi Quintana
Posts: 859
Joined: Sun Oct 09, 2005 10:41 pm
Location: Cusco - Perú
Contact:

Re: Impresora FISCAL por COM1, ayuda en mejorar velocidad

Post by Willi Quintana »

HOla,,,
Cada 8 o 10 lineas de impresion le colocas el SysWait(0.5) y solucionas el lio...
Salu2
Willi
User avatar
Adolfo
Posts: 815
Joined: Tue Oct 11, 2005 11:57 am
Location: Chile
Contact:

Re: Impresora FISCAL por COM1, ayuda en mejorar velocidad

Post by Adolfo »

Hola Willi.
En las nuevas puede ser, pero las viejas, NO

Ademas si se pudo hacer en VB, poruqe no en HARBOUR, la verdad es que ya estoy medio "congestionado" de ideas. ahora funciona, todavia no hay quejas, pero la idea es dejarlo igual o mejor.

Saludos
Desde Chile
Adolfo
;-) Ji,ji,ji... buena la cosa... "all you need is code"

http://www.xdata.cl - Desarrollo Inteligente
----------
Lenovo Legion Y520, 16GB Ram, 1 TB NVME M.2, 1 TB SSD, GTX 1050
elmoiquique
Posts: 257
Joined: Wed May 16, 2007 9:40 pm
Location: Iquique Chile

Re: Impresora FISCAL por COM1, ayuda en mejorar velocidad

Post by elmoiquique »

Hola Adolfo

Una consulta, estoy empezando en este tema de la impresoras fiscales,

ya tengo algunas consultas, ya puedo comunicarme con la impresora pero como lo hago para escribir en ella y cortar el papel, agradeceria tu ayuda
Fivewin 11.07
User avatar
Adolfo
Posts: 815
Joined: Tue Oct 11, 2005 11:57 am
Location: Chile
Contact:

Re: Impresora FISCAL por COM1, ayuda en mejorar velocidad

Post by Adolfo »

Eres de Chile...

Te envio mail con info.... dime a cual ?

Saludos
;-) Ji,ji,ji... buena la cosa... "all you need is code"

http://www.xdata.cl - Desarrollo Inteligente
----------
Lenovo Legion Y520, 16GB Ram, 1 TB NVME M.2, 1 TB SSD, GTX 1050
elmoiquique
Posts: 257
Joined: Wed May 16, 2007 9:40 pm
Location: Iquique Chile

Re: Impresora FISCAL por COM1, ayuda en mejorar velocidad

Post by elmoiquique »

Adolfo wrote:Eres de Chile...

Te envio mail con info.... dime a cual ?

Saludos
Hola Adolfo

Si soy de Chile-Iquique email: elmoceballos@gmail.com


agradeceria tu ayuda
Fivewin 11.07
elmoiquique
Posts: 257
Joined: Wed May 16, 2007 9:40 pm
Location: Iquique Chile

Re: Impresora FISCAL por COM1, ayuda en mejorar velocidad

Post by elmoiquique »

Hola Adolfo

Una consulta existe alguna diferencia en la programacion o en los comando entre una IBM 4610 1NR y TF6, porque la pregunta,,,

Programe y realice pruebas en la 1NR y todo bien, pero cuando instale la TF6, imprime solo el titulo y el final, y queda como colgada... me da la impresion que debe ser por la velocidad, pero en la TF6 no puedo hacer pruebas ya que esta esta en modo fiscal...

cualquier sugerencia es bienvenida
Fivewin 11.07
User avatar
Adolfo
Posts: 815
Joined: Tue Oct 11, 2005 11:57 am
Location: Chile
Contact:

Re: Impresora FISCAL por COM1, ayuda en mejorar velocidad

Post by Adolfo »

La tf6 al perecer pide mas velocidad de conexion.

Eso tengo entendido... desgraciadamente no tengo clientes con ese modelo.
Dejame averiguar y te responde bien.
;-) Ji,ji,ji... buena la cosa... "all you need is code"

http://www.xdata.cl - Desarrollo Inteligente
----------
Lenovo Legion Y520, 16GB Ram, 1 TB NVME M.2, 1 TB SSD, GTX 1050
elmoiquique
Posts: 257
Joined: Wed May 16, 2007 9:40 pm
Location: Iquique Chile

Re: Impresora FISCAL por COM1, ayuda en mejorar velocidad

Post by elmoiquique »

Adolfo wrote:La tf6 al perecer pide mas velocidad de conexion.

Eso tengo entendido... desgraciadamente no tengo clientes con ese modelo.
Dejame averiguar y te responde bien.
ok, he buscado en internet y no aparece nada de como configurar el puerto de la TF6, pero si aparece de la 1NR...

igualmente si encuentro la solucion, aviso

ggracias
Fivewin 11.07
User avatar
karinha
Posts: 4882
Joined: Tue Dec 20, 2005 7:36 pm
Location: São Paulo - Brasil

Re: Impresora FISCAL por COM1, ayuda en mejorar velocidad

Post by karinha »

Intenta asi,

Code: Select all

// Working sample of a simple ASCII terminal program - Developed by Enrico M. Giordano

#include "Fivewin.ch" 

FUNCTION MAIN() 

    LOCAL oDlg 

    LOCAL oGet, cTxt := "" 

    LOCAL nCom 

    DEFINE DIALOG oDlg; 
           SIZE 500, 500; 
           TITLE "Terminale" 

    @ 0, 0 GET oGet VAR cTxt MEMO READONLY 

    oGet:bKeyDown = { | nKey | Tasti( nCom, nKey ) } 

    ACTIVATE DIALOG oDlg; 
             ON INIT ( oGet:AdjClient(),; 
                       nCom := APRICOM( oDlg, oGet ),; 
                       IF( nCom < 0, oDlg:End(), ) ); 
             CENTER 

    IF nCom >= 0; CLOSECOMM( nCom ); ENDIF 

    RETURN NIL 


STATIC FUNCTION TASTI( nCom, nKey ) 

    SENDSTR( nCom, CHR( nKey ) ) 

    RETURN NIL 


STATIC FUNCTION APRICOM( oDlg, oGet ) 

    LOCAL nCom, cDcb 

    BEGIN SEQUENCE

        nCom = OPENCOMM( "COM1", 16384, 16384 ) 

        IF nCom < 0 
            ? "Errore di apertura della porta di comunicazione." 
            BREAK 
        ENDIF 

        BUILDCOMMDCB( "COM1:115200,N,8,1", @cDcb )

        /*

        Ó

        BUILDCOMMDCB( "COM1:9600,N,8,1", @cDcb )

        */

        IF !SETCOMMSTATE( nCom, cDcb ) 
            ? "Errore di impostazione della porta di comunicazione." 
            BREAK 
        ENDIF 

        oDlg:bCommNotify = { | nCom | Connect( nCom, oGet ),; 
                                      EnableCommNotification( nCom, oDlg:hWnd, 1, -1 ) } 

        IF !ENABLECOMMNOTIFICATION( nCom, oDlg:hWnd, 1, -1 ) 
            ? "Errore di abilitazione della notifica." 
            BREAK 
        ENDIF 
    RECOVER 
        nCom = -1 
    END SEQUENCE 

    RETURN nCom 


STATIC FUNCTION CONNECT( nCom, oGet ) 

    LOCAL cStr 

    ENABLECOMMNOTIFICATION( nCom, 0, 1, -1 ) 

    cStr = RECEIVESTR( nCom ) 

    cStr = STRTRAN( cStr, CHR( 13 ), "" ) 
    cStr = STRTRAN( cStr, CHR( 10 ), CRLF ) 

    oGet:Append( cStr ) 

    RETURN NIL 


STATIC FUNCTION SENDSTR( nCom, cString ) 

    LOCAL nBytes := WRITECOMM( nCom, cString ) 

    RETURN nBytes = LEN( cString ) 


STATIC FUNCTION RECEIVESTR( nCom ) 

    LOCAL cBuf := SPACE( 1000 ) 

    RETURN LEFT( cBuf, READCOMM( nCom, @cBuf ) )
 
João Santos - São Paulo - Brasil
User avatar
karinha
Posts: 4882
Joined: Tue Dec 20, 2005 7:36 pm
Location: São Paulo - Brasil

Re: Impresora FISCAL por COM1, ayuda en mejorar velocidad

Post by karinha »

João Santos - São Paulo - Brasil
elmoiquique
Posts: 257
Joined: Wed May 16, 2007 9:40 pm
Location: Iquique Chile

Re: Impresora FISCAL por COM1, ayuda en mejorar velocidad

Post by elmoiquique »

Hola Karinha

el problema que tengo no es la comunicacion,,, es la programacion con respecto a la impresora IBM 4610 1NR y TF6, no se son iguales o no en los comandos...esa es mi duda
Fivewin 11.07
User avatar
karinha
Posts: 4882
Joined: Tue Dec 20, 2005 7:36 pm
Location: São Paulo - Brasil

Re: Impresora FISCAL por COM1, ayuda en mejorar velocidad

Post by karinha »

João Santos - São Paulo - Brasil
Post Reply