abraao895 Postado 22 Julho, 2013 Postado 22 Julho, 2013 Bom dia pessoal, estou com uma situação estranha aqui. Estou utilizando o seguinte source para fazer impressão de várias vias de um determinado relatório gerencial implementado em nosso PDV. Segue: //Obtêm o índice do relatório gerencial indiceRG := ecf.BuscarIndiceRG(10); //Abre o relatório gerencial ecf.AcbrEcf.AbreRelatorioGerencial(indiceRG); (...) if max_vias = 1 then begin imprimirREAux; end else begin for j := 1 to userVias do begin if ecf.AguardarRespostaEcf then begin imprimirREAux; end; //Se não for a última via corta o papel if (j <> userVias) then begin if ecf.AguardarRespostaEcf then begin ecf.AcbrEcf.CortaPapel(true); Sleep(150); //Fórum da ACBr aconselhou um pequeno time para a guilhotina end; end; end; end; (...) //---- procedure imprimirREAux; begin //Imprime as linhas no relatório gerencial ecf.AcbrEcf.LinhaRelatorioGerencial(rel.Text); //Adiciona o espaço em branco no final if ((ckAdicionarEspacoFinal.Visible)and(ckAdicionarEspacoFinal.Checked)) then begin ecf.AcbrEcf.PulaLinhas(max_linhas); if ecf.AguardarRespostaEcf then begin ecf.AcbrEcf.LinhaRelatorioGerencial('</linha_simples>'); end; end; Inc(aux); end; //---- No arquivo de log do ECF eu tenho: -- 18:11:46:993 TX -> [STX][4][NUL][FS][20]0[NUL] 18:11:48:188 RX <- @[NUL][NUL][NUL] -- 18:11:48:196 LinhaRelatorioGerencial( "[CR][LF]</linha_dupla>[CR][LF] (...)", 0 ) TX -> [STX]B[STX][FS][20][LF]================================================[LF] [ESC][14]ENDERE[128]O DE ENTREGA[20][LF] REF. AO CUPOM: 014080 - VIA: 01/02 [LF]================================================[LF] (...)[213]y 18:11:49:581 RX <- @[NUL][NUL][NUL] -- 18:11:49:581 TX -> [STX]5[NUL][FS][20]------------------------------------------------[LF][170][BS] 18:11:49:758 RX <- @[NUL][NUL][NUL] -- 18:11:49:758 PulaLinhas( 2 ) TX -> [STX][ACK][NUL][FS][20][LF][LF]D[NUL] 18:11:49:911 RX <- @[NUL][NUL][NUL] -- 18:11:49:911 LinhaRelatorioGerencial( "</linha_simples>", 0 ) TX -> [STX]5[NUL][FS][20]------------------------------------------------[LF][170][BS] 18:11:50:088 RX <- @[NUL][NUL][NUL] -- 18:11:54:088 CortaPapel TX -> [STX][ENQ][NUL][FS]#[WAK]P[NUL] 18:11:54:211 RX <- [4]@[NUL][NUL][NUL] -- 18:11:54:211 TX -> [STX][ENQ][NUL][FS]#A[128][NUL] 18:11:54:334 RX <- [4]@[NUL][NUL][NUL] A princípio não detectei nenhum problema, mas a Bematech está cortando o papel ANTES de pular as linhas em branco. Já tentei de tudo, aumentar valor de Sleep() entre os comandos, tentando fazer com que a sequência fosse respeitada mas não obtive sucesso. O mais estranho é que quando foi implementado funcionava normalmente. Gostaria da opinião de vocês. Desde já agradeço.
Moderadores Juliomar Marchetti Postado 22 Julho, 2013 Moderadores Postado 22 Julho, 2013 ACBrECF.MaxLinhasBuffer := 0; depois retorna o valor depois poste o resultado Juliomar Marchetti skype: juliomar telegram: juliomar e-mail: [email protected] http://www.juliomarmarchetti.com.br
Moderadores Régys Silveira Postado 22 Julho, 2013 Moderadores Postado 22 Julho, 2013 Você também pode passar a quantidade de vias para o método, e ele imprime sozinho. Régys Borges da Silveira http://www.regys.com.br
Fundadores Daniel Simoes Postado 22 Julho, 2013 Fundadores Postado 22 Julho, 2013 Não entendi porque você usa algo como: if ecf.AguardarRespostaEcf ... O problema pode estar no seu código... para tirar a "prova dos nove", por favor use o ECFTeste e tente reproduzir o problema... 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.
abraao895 Postado 22 Julho, 2013 Autor Postado 22 Julho, 2013 Ah sim, o ecf.AguardarRespostaEcf seria: function TEcf.AguardarRespostaEcf : Boolean ; var i : Integer; begin Result := False; try for i := 1 to 5 do begin if ((ecf.ACBrECF.AguardandoResposta) and (ecf.ACBrECF.AguardaImpressao)) then begin if Assigned(FormPDV) then FormPdv.eStatusEcf.Text := 'Aguardando resposta do ECF..'; Sleep(100); end else begin Result := True; exit; end; end; finally if Assigned(FormPDV) then FormPdv.eStatusEcf.Text := ''; end; end;
abraao895 Postado 22 Julho, 2013 Autor Postado 22 Julho, 2013 (editado) Juliomar, fiz o seguinte: >> Source: maxLBuffer := ecf.AcbrEcf.MaxLinhasBuffer; ecf.AcbrEcf.MaxLinhasBuffer := 0; >> Log do ACBr: -- 10:56:37:630 TX -> [STX]5[NUL][FS][20]------------------------------------------------[LF][170][BS] 10:56:37:807 RX <- @[NUL][NUL][NUL] -- 10:56:37:807 PulaLinhas( 2 ) TX -> [STX][ACK][NUL][FS][20][LF][LF]D[NUL] 10:56:37:934 RX <- @[NUL][NUL][NUL] -- 10:56:37:934 LinhaRelatorioGerencial( "</linha_simples>", 0 ) TX -> [STX]5[NUL][FS][20]------------------------------------------------[LF][170][BS] 10:56:38:111 RX <- @[NUL][NUL][NUL] -- 10:56:38:111 CortaPapel TX -> [STX][ENQ][NUL][FS]#[WAK]P[NUL] 10:56:38:235 RX <- [4]@[NUL][NUL][NUL] O problema persiste. Editado 22 Julho, 2013 por abraao895
abraao895 Postado 22 Julho, 2013 Autor Postado 22 Julho, 2013 Daniel, no ECFTeste, abrindo o RG, pulando linhas e mandando cortar posteriormente funcionou normalmente.
Recommended Posts
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 contaEntrar
Já tem uma conta? Faça o login.
Entrar Agora