Jump to content

dev botao

Acbrmonitor Via Txt


Siepi
Go to solution Solved by Daniel Simoes,
  • Este tópico foi criado há 3734 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.

Recommended Posts

Prezados, estou já em fase final o meu projeto com o acbrmonitor e satisfeito com o resultado.

Existem uma questão que está me preocupando que é a seguinte:

 

Quando capturo os itens de uma pré-venda e os lanço em um cupom aberto, caso sejam 10, 15 itens, tudo ok. Eu tenho uma pre-venda que insistentemente faço vendas com ela, pois possui 49 itens e então, após abrir o cupom fiscal, gravo o remessa.txt (anexo)

 
o acbrmonitor lê, imprime todos os itens como esperado e me gera o retorno.txt, mas aí vejo um problema.
Muitas das vezes o acbrmonitor me gera o retorno faltando linhas. Esse comando teria que me gerar 49 linhas no retorno com a palavra ok: . Diversas vezes ele me gera 44, peguei uma onde gerou 22 e por aí vai. Fora as vezes que foi tudo certo e realmente gerou as 49 como esperado.
 
Até para isolar o meu sistema, abro o cupom manualmente via txt, depois, pelo windows explorer colo na pasta o arquivo com os comandos acima, justamente para não ser do meu aplicativo estar capturando o arquivo antes do acbrmonitor acabar de grava-lo, mas tb aconteceu. Colo o txt na pasta, somente aguardando o retorno e volta incompleto, sem interferência do sistema que está aguardando o retorno.
 
Volto a frisar,em todas as vezes, os 49 itens foram impressos no cupom, o problema é justamente o retorno.txt gerado.
 
Outra coisa que noto é que durante o processo de impressão dos itens, algumas vezes vejo o retorno.txt sumir da pasta,  aí aparece um retorno.tmp, depois o retorno.txt volta, creio que seja algum processamento que o acbrmonitor faça e será que é nesse processo que ele está falhando em gravar algum dos comandos?

remessa.txt

Edited by Siepi
Link to comment
Share on other sites

  • Fundadores

Não fui capaz de reproduzir o problema...

 

Usando o NotePad++, por 7 vezes eu gravei o conteúdo do arquivo ENT.TXT na pasta de monitoramento do ACBrMonitor, e em toadas as 7 vezes obtive resposta para todos os Itens enviados (SAI.TXT)

 

O ACBrMonitor apaga o arquivo ENT.TXT após processá-lo...

Antes do inicio de cada teste eu apaguei o arquivo SAI.TXT

 

Os testes foram realizados usando:

- ACBrMonitor atual (SVN)

- Emulador Sweda Connect/SIM

- Modelo ecfSwedaSTX

 

Poderia descrever melhor como você está testando ?

 

 

SAI.TXT

ent.txt

Consultor SAC ACBr

Daniel Simões de Almeida
O melhor TEF, é com o Projeto ACBr - Clique e Conheça
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr     Telefone:(15) 2105-0750 WhatsApp(15)99790-2976.

Link to comment
Share on other sites

  • Moderadores

Configuração de permissões do windows? Qual a configuração do micro? o usuário e administrador pra criar arquivos?

ele é criado no mesmo micro que está a aplicação ou na rede? se na rede, ela não tem alguma problema de comunicação?

ou por exemplo utiliza em uma wireless? e dai perde o sinal !

seriam algumas coisas a serem visualizadas!

Consultor SAC ACBr Juliomar Marchetti
 

Projeto ACBr

skype: juliomar
telegram: juliomar
e-mail: [email protected]
http://www.juliomarmarchetti.com.br
MVP_NewLogo_100x100_Transparent-02.png
 

 

Link to comment
Share on other sites

Prezados, conforme foi solicitado, continuei observando para verificar algum padrão na ocorrência do erro e o único padrão é que quando se é gerado um arquivo .tmp alternando-se com o arquivo .txt é que ocorre o erro. E somente ocorre quando existem diversos comandos em sequencia na mesma remessa.txt

 

Como falei, trabalho com pre-venda e envio o remessa.txt anexo acima, algumas vezes o retorno.txt que é gerado, vem com as 48 linhas esperadas, que são as respostas de cada comando que estava no remessa e não é visto o retorno.tmp sendo gerado na pasta. Agora, quando vejo o retorno.tmp sendo gerado pelo acbrmonitor, em todas as vezes ele gerou com linhas a menos que a remessa e eu me baseio justamente na quantidade de linhas retornadas para saber se o comando inteiro da remessa foi ou não finalizado. 

 

Agora pergunto, porque o mesmo arquivo de remessa, hora o acbrmonitor gera o retorno.txt de uum vez, hora eu vejo ele gerando 2, ou 3 vezes um retorno.tmp. Mas volto a repetir, sempre a mesma remessa. e com arquivos de remessa pequenos, as vezes ocorre mas com muito menos frequencia.

 

Enfim, espero contar com a ajuda dos colegas.

Link to comment
Share on other sites

Daniel, pelo que entendi lendo o comentário do fonte que diz:

{ Primeiro salva em Temporário para que a gravação de todos os Bytes ocorra
       antes que a aplicação controladora do ACBrMonitor tente ler o arquivo de
       Resposta incompleto }
 

, ele gera o tmp já na pasta e no final renomearia correto? Mas o que acontece quando vão diversos comandos na remessa? a cada um ele colocaria txt e depois voltaria para tmp e depois para txt novamente?

Link to comment
Share on other sites

  • Consultores

Provavelmente está ocorrendo concorrência e numa condição de corrida, o arquivo de envio (remessa.txt) está sendo sobrescrito antes de ser totalmente analisado e processado. Talvez não seja fácil de reproduzir em outras máquinas com hardware diferente, por causa de tempo de resposta do disco, memória, processamento, etc...

[]'s

Consultor SAC ACBr

Elton
Profissionalize o ACBr na sua empresa, conheça o ACBr Pro.

Projeto ACBr     Telefone:(15) 2105-0750 WhatsApp(15)99790-2976.

Um engenheiro de Controle de Qualidade(QA) entra num bar. Pede uma cerveja. Pede zero cervejas.
Pede 99999999 cervejas. Pede -1 cervejas. Pede um jacaré. Pede asdfdhklçkh.
Link to comment
Share on other sites

Para ilustrar o que eu faço. 

Escrevo na pasta c:\Multpaf\ecfmonitor\integracao\remessa\remessa.txt (pasta somente para esse arquivo)

aguardo o arquivo c:\Multpaf\ecfmonitor\integracao\retorno\retorno.txt (pasta somente para esse arquivo)

 

Quando eu escrevo, entro num loop e vou lendo, sem bloqueio, se existe o retorno.txt e quantas linhas ele tem e só quando ele possui a mesma quantidade de linhas que eu mandei no remessa.txt, que no exemplo lá do início do tópico são 48 linhas, é que eu aceito ele como completo. A mesma prevenda, hora funciona, hora não. Creio que tenha a ver com a quantidade de comandos que mandei na remessa, pois eu vejo que o acbrmonitor gera o retorno.txt, mesmo mandando itens para a impressora e ele deveria escrever retorno.txt somente no final, após ter processado todo o remessa.txt com os 48 vendeItem que mandei.

Edited by Siepi
Link to comment
Share on other sites

  • Consultores

Mas você escreve linha a linha o arquivo de entrada do monitor? Ou escreve o arquivo inteiro e depois joga ele na pasta?

[]'s

Consultor SAC ACBr

Elton
Profissionalize o ACBr na sua empresa, conheça o ACBr Pro.

Projeto ACBr     Telefone:(15) 2105-0750 WhatsApp(15)99790-2976.

Um engenheiro de Controle de Qualidade(QA) entra num bar. Pede uma cerveja. Pede zero cervejas.
Pede 99999999 cervejas. Pede -1 cervejas. Pede um jacaré. Pede asdfdhklçkh.
Link to comment
Share on other sites

  • Consultores

Você chega a enviar outro arquivo antes de receber o retorno completo?

[]'s

Consultor SAC ACBr

Elton
Profissionalize o ACBr na sua empresa, conheça o ACBr Pro.

Projeto ACBr     Telefone:(15) 2105-0750 WhatsApp(15)99790-2976.

Um engenheiro de Controle de Qualidade(QA) entra num bar. Pede uma cerveja. Pede zero cervejas.
Pede 99999999 cervejas. Pede -1 cervejas. Pede um jacaré. Pede asdfdhklçkh.
Link to comment
Share on other sites

Não, justamente para não encavalar. A comunicação sempre faço de forma sequencial, mando outro arquivo quando tenho resposta do que enviei antes.
Se vc pegar o remessa.txt que mandei ou o do Daniel, e gravar na pasta vc notará que o acbrmonitor antes da impressora lançar todos os itens, enquanto o acbrmonitor está lançando os comando para a impressora, ele já gerou o retorno.txt na pasta e não deveria. Deveria gerar somente após terminar o remessa.txt. Creio ser isso que possa estar causando o problema. Pelo menos o comentario no fonte contradiz o que está ocorrendo. Pois o acbr deveria executar tudo para depois gerar o retorno.txt

Link to comment
Share on other sites

  • Fundadores

Não concordo... Os fontes parecem corretos...  não há concorrência ou chamada recursiva no tratamento dos comandos... Observe que o Timer de monitoramento é desligado assim que um arquivo é encontrado e somente é religado quando o metodo "Processar" é finalizado...  O método "Processar" por sua vez, trata linha a linha dentro de um loop... cada comando executado, tem seu retorno tratado e anexado no arquivo...

 

Acho que não é uma boa prática o envio de comandos em lote... talvez a comunicação em Sockets (TCP) pode funcionar melhor para o seu caso...

 

Em todo caso... não consegui reproduzir o problema... Já descrevi nesse tópico qual foi minha metodologia de teste...  (ou seja, do meu ponto de vista não há bug)

 

Se você me enviar um passo a passo como posso reproduzir o problema, usando um BAT ou bloco de notas para a geração dos arquivos de Entrada, posso tentar investigar...

  • Like 1
Consultor SAC ACBr

Daniel Simões de Almeida
O melhor TEF, é com o Projeto ACBr - Clique e Conheça
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr     Telefone:(15) 2105-0750 WhatsApp(15)99790-2976.

Link to comment
Share on other sites

Novamente alinhando. 

Eu relatei um problema de retorno faltando comandos, intermitente.

Relatei que notei que o retorno.txt vai sendo gerado mesmo antes do processamento completo do remessa.txt que aomeu ver não deveria acontecer, pois o arquivo remessa.txt como não foi totalmente processado, não pode retornar nada até sua finalização.

Então são dois problemas distintos. O segundo eu consigo simular com mais facilidade. Vou gravar  um vídeo, com o windows explorer aberto em duas janelas, o acbrmonitor aberto tb e vou colar o arquivo numa janela na pasta remessa e vocês verão que enquanto o acbrmonitor vai mandando os comandos para a impressora, um retorno.txt é gravado na pasta e não deveria acontecer. Mais tarde posto o vídeo.

Link to comment
Share on other sites

  • Fundadores

Experimente com esse executável em anexo...

 

Fiz um tratamento de controle de Lote para arquivos TXT, para evitar: apagar TMP, renomear de SAI para TMP e de TMP para SAI a cada comando processado...

 

ACBrMonitor.7z

Consultor SAC ACBr

Daniel Simões de Almeida
O melhor TEF, é com o Projeto ACBr - Clique e Conheça
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr     Telefone:(15) 2105-0750 WhatsApp(15)99790-2976.

Link to comment
Share on other sites

Senhores seguem o vídeo como prometido.

Notem que não existem nenhuma aplicação trabalhando junto. Apenas peguei o arquivo que o Daniel gerou acima o ent.txt, renomeei para remessa.txt e colei na pasta remessa. Enquanto o acbrmonitor vai mandando os comando, antes de finalizar, já é gravado no pasta retorno o retorno.txt e notem que as vezes aparece um retorno.tmp tb.

 

http://youtu.be/OJujj7aD_sU

Link to comment
Share on other sites

  • Fundadores

Daniel, com o exe novo, para cada comando ele deu 

 

ERRO: Communication error 6: Identificador inválido.

 

Isso indica um erro na configuração da porta...

 

Não modifiquei nada no acesso a porta serial...

Consultor SAC ACBr

Daniel Simões de Almeida
O melhor TEF, é com o Projeto ACBr - Clique e Conheça
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr     Telefone:(15) 2105-0750 WhatsApp(15)99790-2976.

Link to comment
Share on other sites

  • Fundadores

Senhores seguem o vídeo como prometido.

Notem que não existem nenhuma aplicação trabalhando junto. Apenas peguei o arquivo que o Daniel gerou acima o ent.txt, renomeei para remessa.txt e colei na pasta remessa. Enquanto o acbrmonitor vai mandando os comando, antes de finalizar, já é gravado no pasta retorno o retorno.txt e notem que as vezes aparece um retorno.tmp tb.

Mas é justamente isso que a rotina faz...

 

Para cada comando processado...

- apaga o TMP se o mesmo existir

- se o SAI.TXT (arquivo de saída) existir,

--- renomeia ele para TMP...

--- Grava a resposta no final do TMP

- se o SAI.TXT (arquivo de saída) não existir,

--- Grava no arquivo TMP

- Renomeia TMP para SAI

 

A mudança que subi no último .EXE modifica apenas esse comportamento... verifique se suas configurações estão corretas...

Consultor SAC ACBr

Daniel Simões de Almeida
O melhor TEF, é com o Projeto ACBr - Clique e Conheça
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr     Telefone:(15) 2105-0750 WhatsApp(15)99790-2976.

Link to comment
Share on other sites

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.

The popup will be closed in 10 seconds...