Jump to content

2 Dia do ACBr

Pré-Venda com Desconto de R$100,00
INSCREVA-SE

Nova Loja Oficial
loja.projetoacbr.com.br
Ajude o projeto a crescer, com estilo

Comprar

Balança SM100 performance surpreendente

Tecnologia Japonesa   Teclado e Visor resistentes a água
Consumo inteligente de etiquetas   Baixo custo de manutenção
Comunicação Ethernet e WIFI independentes

Saiba mais

Impressora de Etiquetas ELGIN - L42 PRO

Protocolos PPLA, PPLB, ZPL, EPL (automático)
Porta USB padrão Opcionais: Ethernet, Serial, Paralela
Sensor de Etiquetas Móvel Garantia de 18 meses

Saiba mais

Recommended Posts

Pessoal, gostaria de saber como vocês fazem para "esperar" a resposta do arquivo sai.txt. Pois possuo uma aplicação em MS Access e utilizo o código abaixo:

  While Dir(CurrentProject.Path & "\sai.txt") = vbNullString
  Wend

Esse "While" roda o loop enquanto o arquivo sai.txt for nulo. Após isso, ele prossegue com o código para ler a resposta do ACBrMonitor.

O Problema é que as vezes essa resposta demora mais que o normal, o tempo para gerar o INI, converter para XML, Assina-lo, Enviar e Receber o retorno da Sefaz...

Quando demora mais que o normal, o aplicativo, dá crash, como em qualquer outra aplicação, uma vez que creio que seja o próprio Windows que crasha. Mas eu gostaria de saber se é dessa forma que vocês fazem, se estou no caminho certo ou se existe uma "Base" do código diferente, mais dinâmica que não cause esse erro...

Share this post


Link to post
Share on other sites
40 minutos atrás, IuriEmanuel disse:

Pessoal, gostaria de saber como vocês fazem para "esperar" a resposta do arquivo sai.txt. Pois possuo uma aplicação em MS Access e utilizo o código abaixo:

  While Dir(CurrentProject.Path & "\sai.txt") = vbNullString
  Wend

Esse "While" roda o loop enquanto o arquivo sai.txt for nulo. Após isso, ele prossegue com o código para ler a resposta do ACBrMonitor.

O Problema é que as vezes essa resposta demora mais que o normal, o tempo para gerar o INI, converter para XML, Assina-lo, Enviar e Receber o retorno da Sefaz...

Quando demora mais que o normal, o aplicativo, dá crash, como em qualquer outra aplicação, uma vez que creio que seja o próprio Windows que crasha. Mas eu gostaria de saber se é dessa forma que vocês fazem, se estou no caminho certo ou se existe uma "Base" do código diferente, mais dinâmica que não cause esse erro...

Eu uso o VB6

Tenho uma função quase do mesmo jeito, tenho um loop mas com um (sleep( 1000)) pra esperar um tempo antes da próxima consulta do arquivo e um limite de tempo pra o caso do arquivo não ser criado. Dessa forma ele fica esperando o tempo que for necessário.

10190   RetVal = Dir("C:\nfce-app\acbrSAIDA\Pedido-resp.TXT")		' Verifica o arquivo
10195   Do While (RetVal <> "Pedido-resp.TXT")						'Entra no loop  com a condição de não existir o arquivo
10200       Sleep (1000)											'Espera 1 segundo antes de executar a proxima linha
10205       RetVal = Dir("C:\nfce-app\acbrSAIDA\Pedido-resp.TXT")	'Verifica o arquivo denovo 
  
10210       If temp8 = "7" And RetVal <> "Pedido-resp.TXT" Then		'caso o tempo de execução da rotina for maior que 7 segundos e ainda não exista o arquivo 
10215           GoTo saidoloop										'		eu desisto de le-lo.
10220       End If													'
10225       temp8 = CCur(temp8) + CCur(1)							' Incrementa a contagem do tempo
  
            DoEvents												'Deixa o Windows fazer alguma coisa 
10230   Loop														'
10235 saidoloop:													'

 

  • Like 1
  • Thanks 1

Share this post


Link to post
Share on other sites

Excelente, Juan!

 O Sleep aliado ao DoEvents funciona muito bem! Muito obrigado, talvez só não utilizarei o tempo de espera, pois de qualquer forma quero que a aplicação espere o arquivo, pois preciso que o mesmo retorne a Chave ou a resposta ao usuário final, pois caso esse tempo estoure, a aplicação não receberá a informação... Acho que dá certo desse jeito também, né?

  • Like 1

Share this post


Link to post
Share on other sites
2 horas atrás, IuriEmanuel disse:

Excelente, Juan!

 O Sleep aliado ao DoEvents funciona muito bem! Muito obrigado, talvez só não utilizarei o tempo de espera, pois de qualquer forma quero que a aplicação espere o arquivo, pois preciso que o mesmo retorne a Chave ou a resposta ao usuário final, pois caso esse tempo estoure, a aplicação não receberá a informação... Acho que dá certo desse jeito também, né?

:D Que Ótimo , muito bom ajudar.

 

Da certo sim, o tempo é um incremento.

Pense no caso por exemplo de o Acbrmonitor travar e não gerar o arquivo de resposta nunca(O que já aconteceu em clientes meus). Eu gosto de ter um tratamento pra o programa não entrar em um loop infinito.

Edited by JHUANZITOLLL

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×
×
  • Create New...