Ir para conteúdo
  • Cadastre-se

dev botao

Sugestão De Implementação Acbrmonitor Via Socket Ecf.vendeitem


Siepi
  • Este tópico foi criado há 3617 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.

Recommended Posts

Prezados,

estou realizando testes maciços com o ACBrMonitor e PHP via socket, no que tenho tido muito sucesso até o momento.

Praticamente já passei por todos os comandos do objeto ECF sem erro.

 

Uma coisa que me preocupou foi a venda de muitos itens via socket. Vamos aos testes.

 

Temos o método ECF.VendeItem onde vamos vendendo itens, um a um. Quando há concomitância nem há tanto problema, mas quando vendemos uma pré-venda aí complica. Pois mandamos o primeiro item, aguardamos a resposta, mandamos o segundo e assim sucessivamente. Com um teste de 15 itens, levou 1 minuto e 5 segundos da abertura do cupom ao fechamento.

 

Vi que no utilitário ECFTeste que vem junto ao instalador para auxílio nos testes, existe uma função bem interessante no menu Cupom Fiscal, o Teste de Velocidade, vc indica a quantidade de itens, a quantidade de cupons e ele dispara para a impressora. A mesma quantidade de itens (15) nesse teste demorou 12 segundos da abertura ao fechamento. Muito mais rápido.

 

A lógica, creio, é que o ECFTeste usa a comunicação direta e não o socket como estou usando.

 

Seria viável se modificar o método no ACBrMonitor, onde passaríamos arrays?

 

Exemplo: Hoje temos 

 

ECF.VendeItem(789012456780,PRODUTO TESTE, II, 3, 2.5)

 

O comando acima continuaria como está e a modificação poderíamos passar

 

ECF.VendeItem([789012456780,PRODUTO TESTE, II, 3, 2.5], [789012456780,PRODUTO TESTE, II, 3, 2.5],[789012456780,PRODUTO TESTE, II, 3, 2.5],[789012456780,PRODUTO TESTE, II, 3, 2.5],[789012456780,PRODUTO TESTE, II, 3, 2.5],[789012456780,PRODUTO TESTE, II, 3, 2.5],[789012456780,PRODUTO TESTE, II, 3, 2.5])

 

o método, reconhecendo que está recebendo arrays, faria exatamente o que o teste de velocidade faz, mandando estes itens ao cupom, não necessitando assim eu realizar um comando via socket para cada itens, mas apenas um comando para todos os itens.

 

No mais um abraço e até logo.

Editado por Siepi
Link para o comentário
Compartilhar em outros sites

  • Fundadores

Creio que o problema esteja na sua rotina de implementação Socket... ou no meio de transporte (rede)

 

Aqui temos uma aplicação em xHarbour, que se comunica com o ACBrMonitor por TCP/IP, onde a mesma roda em um Servidor SSH e o ACBrMonitor na máquina Local...  A impressão é quase tão rápida quanto o acesso direto pela serial...

 

A sua sugestão já existe... Você pode enviar vários comandos no mesmo bloco de transmissão, basta usar uma quebra de linha entre um comando e outro...

 

ECF.VendeItem()

ECF.VendeItem()

...

 

Porém isso não é nada bom... pois você perde o controle de qual item foi impresso com sucesso ou falhou

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 para o comentário
Compartilhar em outros sites

Nao sabia que se poderia enviar mais de um comando!

 

A rotina base foi o proprio socket de teste que veio com o abcrmonitor. Somente incluí novos vendeitem, coloquei o arquivo anexo.

 

Vou testar enviando mais de um comando ao mesmo tempo.

 

Essa possível implementação poderia ter como retorno um ok, ou um int com o item que deu erro, se fosse o caso, cobrindo assim a falta de controle quando mandamos mais de um comando com vendeitem.

 

obrigado e volto depois dando noticia.

php_socket.php

Link para o comentário
Compartilhar em outros sites

Moçada, peguei um lance aqui, estou lendo a resposta em cada vendeitem, isso tem  atraso tudo.

 

 

Mandando os comandos em um envio somente, e lendo o retorno, posso analisar e saber se deu certo ou algum item deu pau.

O retorno de cada item vendido vem.

 

Muito obrigado pela ajuda.

Link para o comentário
Compartilhar em outros sites

  • Este tópico foi criado há 3617 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar Agora
×
×
  • Criar Novo...

Informação Importante

Colocamos cookies em seu dispositivo para ajudar a tornar este site melhor. Você pode ajustar suas configurações de cookies, caso contrário, assumiremos que você está bem para continuar.