Ir para conteúdo
  • Cadastre-se

dev botao

Recommended Posts

  • Membros Pro
Postado

@Daniel Simoes @Daniel InfoCotidiano @Victor H. Gonzales - Panda

 

Uma informação que pode ajudar a entender o que pode estar ocorrendo. Observem que na imagem que enviei onde ocorreu o erro, a informação do CNPJ e IE, compõem 
a primeira linha do cabeçalho, ou seja, estariam no primeiro pacote de 16.384k enviados. Contudo, observem que informações deste primeiro pacote voltam a aparecer erroneamente mais abaixo,
quebrando a impressão, conforme imagem a seguir (Ressalto que observando a primeira imagem, completa, que postei e que deu origem ao tópico, o mesmo erro ocorre, ou seja, informações do primeiro pacote de 16.384kb são
reimpressos erroneamente, e com isso, a impressão se perde).  Fico no aguardo.

image.png.f01d5120730b36046505e220dfe472e0.png  

  • Consultores
Postado

pode ser erro nesse "split" do buffer que está sendo feito, e truncando a imagem

Consultor SAC ACBr

Victor H Gonzales - Pandaaa
Ajude o Projeto ACBr crescer - Assine o SAC

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

Projeto ACBr - A maior comunidade Open Source de Automação Comercial do Brasil

Participe de nosso canal no Discord e fique ainda mais próximo da Comunidade !!

"Aprender é a única coisa que a mente nunca se cansa, nunca tem medo e nunca se arrepende” - Leonardo da Vinci

"Ter sucesso é falhar repetidamente, mas sem perder o entusiasmo"

  • Membros Pro
Postado

Logo após identificarmos essa questão do reenvio, iniciamos de imediato os testes do envio completo. Assim que tiver algum retorno, atualizo vocês aqui.
Obrigado pela atenção. 

  • Curtir 1
  • 2 meses depois ...
  • Membros Pro
Postado

Boa tarde a todos!

Senhores, retomando o problema...

Demorei em dar retorno para ter um maior tempo de testes, gostaria de avaliar um cenário com vocês.

Faço o envio das impressões por meio de tasks, mais precisamente, task IFuture. 
Se envio  mais de um documento (DANFE e CCD, por exemplo), controlo se a task atual, DANFE, ainda está em execução para só depois permitir que a segunda task de impressão, CCD,  seja executada.
A questão é que esporadicamente ocorre da segunda task iniciar com a impressora ainda realizando a impressão anterior, com isso, erros de impressão. 

Gostaria de obter o status da impressora para determinar que ainda está ocorrendo uma impressão e não iniciar a segunda até a conclusão, contudo, o método TACBRPosPrinter.LerStatusImpressora()
me retorna apenas o status de stGavetaAberta, isso quando não tenho retorno de tampa aberta quando a mesma não está.

Como posso utilizar o TACBRPosPrinter de forma a ter status reais para definir que a impressora ainda está "ocupada", há algum outro componente que precise trabalhar em conjunto ou alguma outra coisa?
O controle da porta se dá por meio da ativação e desativação do próprio TACBRPosPrinter.


 

  • Membros Pro
Postado (editado)
28 minutos atrás, Próton Sistemas disse:

Boa tarde a todos!

Senhores, retomando o problema...

Demorei em dar retorno para ter um maior tempo de testes, gostaria de avaliar um cenário com vocês.

Faço o envio das impressões por meio de tasks, mais precisamente, task IFuture. 
Se envio  mais de um documento (DANFE e CCD, por exemplo), controlo se a task atual, DANFE, ainda está em execução para só depois permitir que a segunda task de impressão, CCD,  seja executada.
A questão é que esporadicamente ocorre da segunda task iniciar com a impressora ainda realizando a impressão anterior, com isso, erros de impressão. 

Gostaria de obter o status da impressora para determinar que ainda está ocorrendo uma impressão e não iniciar a segunda até a conclusão, contudo, o método TACBRPosPrinter.LerStatusImpressora()
me retorna apenas o status de stGavetaAberta, isso quando não tenho retorno de tampa aberta quando a mesma não está.

Como posso utilizar o TACBRPosPrinter de forma a ter status reais para definir que a impressora ainda está "ocupada", há algum outro componente que precise trabalhar em conjunto ou alguma outra coisa?
O controle da porta se dá por meio da ativação e desativação do próprio TACBRPosPrinter.


 

Complementando,

Faço a definição da porta para componente:

ACBrPosPrinter.Porta := porta;

E não possuo a impressora instalada no windows. 

Editado por Próton Sistemas
  • Membros Pro
Postado

Obrigado pelo retorno.

Mas  mesmo nos testes no ACBrPosPrinter Teste, se mando imprimir o conteúdo do memo e durante a impressão solicito o status, não tenho como retorno um stImprimindo, me retorna um
"Nennhum Erro encontrado", ou seja, nenhum status
Preciso de fato saber que a impressora está "ocupada", não concluiu a impressão.

  • Consultores
Postado

eu tenho um "semaforo" para muitas impressoras
entao antes de imprimir, verifico o status.
dependendo do status envio o comando imprimir ou mando uma mensagem para o usuario.
Mas realmente imprimindo nao tem.
 

Consultor SAC ACBr

Daniel de Morais (Infocotidiano)
Ajude o Projeto ACBr crescer - Assine o SAC

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

  • Membros Pro
Postado (editado)
6 minutos atrás, Daniel InfoCotidiano disse:

eu tenho um "semaforo" para muitas impressoras
entao antes de imprimir, verifico o status.
dependendo do status envio o comando imprimir ou mando uma mensagem para o usuario.
Mas realmente imprimindo nao tem.
 

Poderia compartilhar o "dependendo do status envio o comando imprimir"?
Sob qual status vc libera a impressão?
Eu estou precisando de uma maior precisão para permitir a próxima impressão. Qual ou quais os status que vc utiliza para determinar que a impressora está "livre" para uma nova impressão?

 

Editado por Próton Sistemas
  • Fundadores
Postado
1 hora atrás, Próton Sistemas disse:

Poderia compartilhar o "dependendo do status envio o comando imprimir"?

Não é uma boa abordagem.. algumas impressoras, podem não permitir a comunicação pela Porta, se ela está aberta em outro canal...  Ou ainda não responder ao Pedido de Status, enquanto estão ocupadas...

Realmente acho que é necessário "enfileirar" essas Threads, usando um controle de semáforos

  • Curtir 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.

  • Membros Pro
Postado (editado)

Bom dia todos!

Estou realizando alguns testes utilizando o exe do ACBrPosPrinter e estou recebendo um erro de timeout seguido de impressão de caracteres estranhos.

1 - Ocorre com bitmaps grandes (impressão com muitas linhas);
2 - Defini vários valores para BytesCount e Interval, entre outros, mas sempre retorna o mesmo erro de timeout(16.384 kb enviados para USB);
3 - Não tenho driver spooler instalado, mando direto para a USB;
4 - Porta ativada ou desativada / ACBrPosPrinter ativado ou desativado
4 - Segue imagem do exe:

image.thumb.png.23c777286ec2e7325cc4a359a98f8278.png 

 

Algo adicional que possa ser feito?
 

Editado por Próton Sistemas
  • Consultores
Postado

Infelizmente o ideal não é utilizar bitmaps grandes.
e para ficar mais performático, incluir na memória da impressora.
Exemplo abaixo para subir a imagem via tools na i9

tente realizar testes com a imagem em memoria da impressora, p ver se ela nao esta afetando timeout

Consultor SAC ACBr

Daniel de Morais (Infocotidiano)
Ajude o Projeto ACBr crescer - Assine o SAC

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

×
×
  • 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.