Membros Pro Próton Sistemas Postado 18 Julho Autor Membros Pro Postado 18 Julho @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.
Consultores Victor H. Gonzales - Panda Postado 18 Julho Consultores Postado 18 Julho pode ser erro nesse "split" do buffer que está sendo feito, e truncando a imagem Victor H Gonzales - Pandaaa Ajude o Projeto ACBr crescer - Assine o SAC (15) 2105-0750 (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"
Fundadores Solution Daniel Simoes Postado 18 Julho Fundadores Solution Postado 18 Julho Experimente definir um buffer de 32k.. ou até mesmo deixar 0, para que os dados sejam enviados, todos de uma vez... Daniel Simões de Almeida O melhor TEF, é com o Projeto ACBr - Clique e Conheça Ajude o Projeto ACBr crescer - Assine o SAC (15) 2105-0750 (15)99790-2976.
Membros Pro Próton Sistemas Postado 19 Julho Autor Membros Pro Postado 19 Julho 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. 1
Membros Pro Próton Sistemas Postado 15 Outubro Autor Membros Pro Postado 15 Outubro 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 Próton Sistemas Postado 15 Outubro Autor Membros Pro Postado 15 Outubro (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 15 Outubro por Próton Sistemas
Consultores Daniel InfoCotidiano Postado 15 Outubro Consultores Postado 15 Outubro A minha i9, ela esta configurada como USB. desabilitado Serial Virtual Desabilitado via tools Daniel de Morais (Infocotidiano) Ajude o Projeto ACBr crescer - Assine o SAC (15) 2105-0750 (15)99790-2976. Discord
Membros Pro Próton Sistemas Postado 15 Outubro Autor Membros Pro Postado 15 Outubro 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 Daniel InfoCotidiano Postado 15 Outubro Consultores Postado 15 Outubro 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. Daniel de Morais (Infocotidiano) Ajude o Projeto ACBr crescer - Assine o SAC (15) 2105-0750 (15)99790-2976. Discord
Membros Pro Próton Sistemas Postado 15 Outubro Autor Membros Pro Postado 15 Outubro (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 15 Outubro por Próton Sistemas
Fundadores Daniel Simoes Postado 15 Outubro Fundadores Postado 15 Outubro 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 1 Daniel Simões de Almeida O melhor TEF, é com o Projeto ACBr - Clique e Conheça Ajude o Projeto ACBr crescer - Assine o SAC (15) 2105-0750 (15)99790-2976.
Membros Pro Próton Sistemas Postado 16 Outubro Autor Membros Pro Postado 16 Outubro Boa tarde a todos. Obrigado pelo retorno @Daniel Simoes
Membros Pro Próton Sistemas Postado 18 Outubro Autor Membros Pro Postado 18 Outubro (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: Algo adicional que possa ser feito? Editado 18 Outubro por Próton Sistemas
Consultores Daniel InfoCotidiano Postado 18 Outubro Consultores Postado 18 Outubro 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 Daniel de Morais (Infocotidiano) Ajude o Projeto ACBr crescer - Assine o SAC (15) 2105-0750 (15)99790-2976. Discord
Recommended Posts