Ir para conteúdo
  • Cadastre-se

dev botao

Corte De Papel Na Bematech Mp-4000 Th Fi


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

Recommended Posts

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.

Link para o comentário
Compartilhar em outros sites

  • Fundadores

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

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

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

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

  • Este tópico foi criado há 3903 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.