Impresora FISCAL por COM1, ayuda en mejorar velocidad

Impresora FISCAL por COM1, ayuda en mejorar velocidad

Postby Adolfo » Thu Jun 21, 2012 10:22 pm

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  Expand view  RUN
//--------------------------------------------------------------------------- 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  Expand view  RUN
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
----------
Asus TUF F15, 32GB Ram, 2 * 1 TB NVME M.2, GTX 1650
User avatar
Adolfo
 
Posts: 860
Joined: Tue Oct 11, 2005 11:57 am
Location: Chile

Re: Impresora FISCAL por COM1, ayuda en mejorar velocidad

Postby Willi Quintana » Fri Jun 22, 2012 3:05 am

HOla,,,
Cada 8 o 10 lineas de impresion le colocas el SysWait(0.5) y solucionas el lio...
Salu2
Willi
User avatar
Willi Quintana
 
Posts: 1020
Joined: Sun Oct 09, 2005 10:41 pm
Location: Cusco - Perú

Re: Impresora FISCAL por COM1, ayuda en mejorar velocidad

Postby Adolfo » Fri Jun 22, 2012 12:18 pm

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
----------
Asus TUF F15, 32GB Ram, 2 * 1 TB NVME M.2, GTX 1650
User avatar
Adolfo
 
Posts: 860
Joined: Tue Oct 11, 2005 11:57 am
Location: Chile

Re: Impresora FISCAL por COM1, ayuda en mejorar velocidad

Postby elmoiquique » Mon Aug 03, 2015 6:10 pm

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-Xharbour 24.09, Iquique, Chile
elmoiquique
 
Posts: 316
Joined: Wed May 16, 2007 9:40 pm
Location: Region de Ñuble, Chile

Re: Impresora FISCAL por COM1, ayuda en mejorar velocidad

Postby Adolfo » Tue Aug 04, 2015 2:05 pm

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
----------
Asus TUF F15, 32GB Ram, 2 * 1 TB NVME M.2, GTX 1650
User avatar
Adolfo
 
Posts: 860
Joined: Tue Oct 11, 2005 11:57 am
Location: Chile

Re: Impresora FISCAL por COM1, ayuda en mejorar velocidad

Postby elmoiquique » Tue Aug 04, 2015 8:29 pm

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-Xharbour 24.09, Iquique, Chile
elmoiquique
 
Posts: 316
Joined: Wed May 16, 2007 9:40 pm
Location: Region de Ñuble, Chile

Re: Impresora FISCAL por COM1, ayuda en mejorar velocidad

Postby elmoiquique » Mon Aug 17, 2015 11:23 pm

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-Xharbour 24.09, Iquique, Chile
elmoiquique
 
Posts: 316
Joined: Wed May 16, 2007 9:40 pm
Location: Region de Ñuble, Chile

Re: Impresora FISCAL por COM1, ayuda en mejorar velocidad

Postby Adolfo » Tue Aug 18, 2015 3:38 pm

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
----------
Asus TUF F15, 32GB Ram, 2 * 1 TB NVME M.2, GTX 1650
User avatar
Adolfo
 
Posts: 860
Joined: Tue Oct 11, 2005 11:57 am
Location: Chile

Re: Impresora FISCAL por COM1, ayuda en mejorar velocidad

Postby elmoiquique » Tue Aug 18, 2015 3:47 pm

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-Xharbour 24.09, Iquique, Chile
elmoiquique
 
Posts: 316
Joined: Wed May 16, 2007 9:40 pm
Location: Region de Ñuble, Chile

Re: Impresora FISCAL por COM1, ayuda en mejorar velocidad

Postby karinha » Tue Aug 18, 2015 5:39 pm

Intenta asi,

Code: Select all  Expand view  RUN

// 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 - Phone: +55(11)95150-7341
User avatar
karinha
 
Posts: 7831
Joined: Tue Dec 20, 2005 7:36 pm
Location: São Paulo - Brasil

Re: Impresora FISCAL por COM1, ayuda en mejorar velocidad

Postby karinha » Tue Aug 18, 2015 5:42 pm

João Santos - São Paulo - Brasil - Phone: +55(11)95150-7341
User avatar
karinha
 
Posts: 7831
Joined: Tue Dec 20, 2005 7:36 pm
Location: São Paulo - Brasil

Re: Impresora FISCAL por COM1, ayuda en mejorar velocidad

Postby elmoiquique » Tue Aug 18, 2015 10:55 pm



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-Xharbour 24.09, Iquique, Chile
elmoiquique
 
Posts: 316
Joined: Wed May 16, 2007 9:40 pm
Location: Region de Ñuble, Chile

Re: Impresora FISCAL por COM1, ayuda en mejorar velocidad

Postby karinha » Wed Aug 19, 2015 4:07 pm

João Santos - São Paulo - Brasil - Phone: +55(11)95150-7341
User avatar
karinha
 
Posts: 7831
Joined: Tue Dec 20, 2005 7:36 pm
Location: São Paulo - Brasil


Return to FiveWin para Harbour/xHarbour

Who is online

Users browsing this forum: No registered users and 55 guests