Página 1 de 1

Enviando e Recebendo dados ECF Daruma

Enviado: 30 Jul 2012 20:26
por Gilberto M Silva
Olá pessoal, estou tendo problemas com o tempo de latência do observer da daruma, fica travando ao criar o daruma.ret conforme abaixo:

Código: Selecionar todos

***********************************
*RETORNO IMPRESSORA FISCAL DARUMA
***********************************
*static function COMUNICA_COM_ECF(VAR_COMANDO_ECF)

function COMUNICA_COM_ECF(VAR_COMANDO_ECF)

Delete File("C:\DARUMA.CMD")
Delete File("C:\STATUS.TXT")
Delete File("C:\RETORNO.TXT")
Delete File("C:\DARUMA.RET")

/*Escreve comandos no Arquivo*/
   H_Handle := fcreate("C:\DARUMA.CMD" )
   FWrite( H_Handle , @VAR_COMANDO_ECF, Len( VAR_COMANDO_ECF) )
   FClose( H_Handle  )
   TFIM := seconds() + 600
   VAR_ESPERA:=1
[color=#FF0000]/*Espera que o Arquivo de Resposta Seja Criado*/
   do while VAR_ESPERA > 0
      if File("C:\DARUMA.RET")
         VAR_ESPERA :=0
      else
         IF (seconds() > TFIM)
            TONE(600,3)
            JANELA(10,12,14,48)
            @11,14 SAY "Observer nÆo carregou, Clique em:"
            @12,14 SAY "Iniciar/Programas/Inicializar"
            @13,14 SAY "e clique em Atalho para Observer2"
            @15,15 SAY "Pressione Qualquer Tecla..."
            INKEY(0)
            CLOS ALL
            QUIT
         ENDIF
         loop
      end if
   enddo
[/color]
   RET_TAM:=0
/*Espera o Arquivo ter um conteudo*/
   do While RET_TAM = 0

    H_Handle := Fopen("C:\DARUMA.RET")
    RET_TAM =  FSeek( H_Handle, 0, FS_END )
    Fclose(H_Handle)

   enddo

   H_Handle:= Fopen("C:\DARUMA.RET")

   POS_RET = 0
   VAR_RET_CMD=" "
   VAR_AUX =" "

   if RET_TAM > 0
      for POS_RET = 1 to RET_TAM - 1
         fread( H_Handle, @VAR_AUX, 1)
         if VAR_AUX <> chr(13)
           VAR_RET_CMD= VAR_RET_CMD + VAR_AUX
      end if
      next
   endif
   fclose(H_Handle)
******************************************************
   VAR_BUFFER_RETORNO:=VAR_RET_CMD
return NIL

*///Fim da Função que envia os dados para o ECF///
fica travando no laço "Espera que o Arquivo de Resposta Seja Criado", se almentar o tempo de latência no observer, o sistema fica lento, alguém tem uma idéia de como posso melhorar esse código, pra acabar com essa pendenga de latência?
desde já obg.

Enviando e Recebendo dados ECF Daruma

Enviado: 04 Set 2012 11:38
por rubens
Então...

Eu não gosto muito da susgestão "troque por isso ou por aquilo" mas já que voce está trabalhando com arquivos texto de envio e retorno, porque não adapta aí no seu sistema o acbrmonitor?
Não vai ter muito trabalho e vai ficar com suporte para quase todas as ecfs do mercado sem ter que alterar o seu programa fonte.

Eu tentei usar o observer e enfrentei alguns problemas que não tive com o acbrmonitor...

Rubens

Enviando e Recebendo dados ECF Daruma

Enviado: 04 Set 2012 20:13
por Gilberto M Silva
é isso que estou fazendo, mais em relação a função citada resolvi colocando uma linha ao criar o .cmd eu crio um .cmx e copio para um .cmd

Código: Selecionar todos

lf_fcopy('daruma.cmx','daruma.cmd')
e resolveu o problema de travamento.