Ir para conteúdo
  • Cadastre-se

dev botao

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

Recommended Posts

Postado

Sou novato.

Alguem pode me dar uma ajuda pra configurar no componentes a impressão e corte de papel?

O Caso e o seguinte, estou implementando no sistema nfce, a impressão so faz ao sair do sistema, como ficasse preso a impressão e não corta o papel

então vi que nos fontes do PosPrinterTeste ele tem que ativar , porem eu tento ativar mas não consigo... e deve ser por causa que estou esquecendo de passar alguma configuração para o ativamento do posprinter, porem tentei passar as seguintes comandos:

  Device.Porta := cmbPortaSerial.Text ;

  Device.Baud := StrToInt(cmbBaudRate.Text) ;

  Device.Data := StrToInt(cmbDataBits.Text) ;

  Device.Parity := TACBrSerialParity( cmbParity.ItemIndex ) ;

  Device.Stop := TACBrSerialStop( cmbStopBits.ItemIndex ) ;

  Device.HandShake := TACBrHandShake( cmbHandShaking.ItemIndex ) ;

  Device.HardFlow := chHardFlow.Checked ;
  VerificaFlow ;

  Device.SoftFlow := chSoftFlow.Checked ;
  VerificaFlow ;

....

      if ACBrPosPrinter1.Ativo = true then
      begin
        if modelonfce = '1' then
        begin
          ACBrPosPrinter1.Modelo := ppEscBematech;
        end;
        if modelonfce = '2' then
        begin
          ACBrPosPrinter1.Modelo := ppEscDaruma;
        end;

...

        ACBrNFeDANFeRL1.Impressora := NomeimpNFCE;//'Daruma DR800';
        ACBrNFeDANFCeFortes1.Impressora := NomeimpNFCE;//'Daruma DR800';

         ACBrPosPrinter1.LinhasEntreCupons := 6;
         //ACBrPosPrinter1.EspacoEntreLinhas := seEspLinhas.Value;
         ACBrPosPrinter1.CortaPapel := true;
         ACBrPosPrinter1.ControlePorta := true;

 

       ACBrPosPrinter1.Ativar ;


       end;

 

 

  • Consultores
Postado
5 horas atrás, tiago Selecto disse:

O Caso e o seguinte, estou implementando no sistema nfce, a impressão so faz ao sair do sistema, como ficasse preso a impressão e não corta o papel

Como assim? Você está fazendo o debug do código e verificando passo a passo o comportamento do seu código?

 

5 horas atrás, tiago Selecto disse:

porem eu tento ativar mas não consigo...

Qual a mensagem de erro que aparece?

 

5 horas atrás, tiago Selecto disse:

porem tentei passar as seguintes comandos

Esses comandos parecem os retirados do PosPrinterTeste. Você está salvando e carregando as configurações do componente?

Mais uma coisa, por favor, anexe o log do componente.

[]'s

Consultor SAC ACBr

Elton
Profissionalize o ACBr na sua empresa, conheça o ACBr Pro.

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

Um engenheiro de Controle de Qualidade(QA) entra num bar. Pede uma cerveja. Pede zero cervejas.
Pede 99999999 cervejas. Pede -1 cervejas. Pede um jacaré. Pede asdfdhklçkh.
Postado

ola , sim estou fazendo debug .. ele da esta msn  em anexo, ao gerar a nota mas não imprime e não corta o papel conforme configuração do componente 

 

perdão mas como gero este arquivo?

 

 

mensagem de erro.jpg

Postado

Ola amigo..

 

a questão e a sequinte... eu verifico se esta ativo o componente posprinter, se não,  eu carrego carrego o modelo e a porta, porem quando vou ativar ele ele da este arro

obs : não estou conseguindo gerar o arquivo , mas dei um print que pode ajudar o entendimento do erro

obrigado

erro de acesso posprinter.jpg

erro de acesso posprinter2.jpg

  • Fundadores
Postado

Vc está usando uma porta Serial que não existe ou já está ocupada por outra aplicação....

Você pode definir as configurações da Serial em: ACBrPosPrinter.Device

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.

  • Moderadores
Postado
22 horas atrás, tiago Selecto disse:

        ACBrNFeDANFeRL1.Impressora := NomeimpNFCE;//'Daruma DR800';
        ACBrNFeDANFCeFortes1.Impressora := NomeimpNFCE;//'Daruma DR800';

Se está imprimindo a NFCe pelo Fortes, e tentando ativar o PosPrinter ao mesmo tempo, pode ter esse tipo de problema, já que a porta pode estar em uso pelo Windows para impressão da NFCe.

Algumas impressoras tem configuração no driver, nas preferências de impressão da impressora instalada no Windows, para fazer o corte automático de papel ao finalizar a impressão. Não sei se é o caso da DR800, verifique.

Outra opção é usar a impressão da NFCe via EscPos, nesse caso estaria usando apenas a impressão direta na porta e não via spooler do Windows. Veja o demo na pasta ACBr\Exemplos\ACBrDFe\ACBrNFe\Demo ACBrNFeDANFeEscPos.

Equipe ACBr BigWings
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr

 

 

Postado

Boa tarde amigo

 

Fiz uns teste , mas não tive sucesso...

tentei pelo exemplo demo que me indicasse , mas retorna: arquivo não pode ser encontrado ou communication  erro 1: Função incorreta.

eu fis os seguintes testes: liguei o ACBrNFe1 no ACBrNFeDANFeESCPOS1 e este no posprinter

 

mas se eu ligar ACBrNFe1 no ACBrNFeDANFCeFortes1 ai ele imprime, so que não corta

 

desculpe minha ignorância, mas qual e a função de cada componente e como e a forma de ligação correta? e o que estou fazendo de errado?

obs tenho instalado : gerenciador fortes no meu delphi 2010, não sei se isto implica no nfce?

  • Moderadores
Postado
4 minutos atrás, tiago Selecto disse:

tentei pelo exemplo demo que me indicasse , mas retorna: arquivo não pode ser encontrado ou communication  erro 1: Função incorreta.

Configurou o modelo e porta corretamente?

4 minutos atrás, tiago Selecto disse:

mas se eu ligar ACBrNFe1 no ACBrNFeDANFCeFortes1 ai ele imprime, so que não corta

Chegou a olhar as configurações da impressora instalada no Windows pra ver se há opção de corte após impressão?

4 minutos atrás, tiago Selecto disse:

desculpe minha ignorância, mas qual e a função de cada componente e como e a forma de ligação correta? e o que estou fazendo de errado?

O ACBrNFeDANFEFR (Fast) e ACBRNFeDANFECeFortes (Fortes) imprimem pelo Spooler do Windows, e dependem da impressora estar instalada.

O ACBrNFeDANFeEscPos é ligada ao PosPrinter e imprime diretamente na porta serial.

6 minutos atrás, tiago Selecto disse:

obs tenho instalado : gerenciador fortes no meu delphi 2010, não sei se isto implica no nfce?

Desconheço esse utilitário, creio que não faça diferença.

  • Curtir 1
Equipe ACBr BigWings
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr

 

 

Postado

Esta em anexo as imagens de configuração dos componentes relevantes ...no meu caso so isolei o  ACBRNFeDANFECe , e sim esta impressora tem guilhotina .

e neste caso de impressão via porta utilizando o pos printer , tem outros parametros que tenha que carregar o componentes como velocidade , paridade etc? 

exemplo de conf de não imprime.jpg

nesta conf. da o erro de  communication incorreta: 1 função incorreta

  • Fundadores
Postado

Primeiro decida, se você irá usar o a impressão do Extrato em Fortes ou em EscPos...

Em Fortes, quem efetua o corte de papel, é o Spooler do Windows, e você deve configurar o corte de papel, no Spooler do driver da impressora...

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.

Postado

Boa noite Tiago. Vou te passar como uso aqui caso não te ajude pode entrar em contato que posso tentar lhe ajudar pois o ruim e ficar sem ajuda. O que vou te passar abaixo e como faço caso não entende é só teclar cara.

function TDM.ConfiguraNFCe_PosPrinter( pMiniImpr,
  pAbreGaveta: boolean): boolean;//nfce
begin
  if ( pMiniImpr = true ) then
  begin
    if not DM.acbrpsprntr.Ativo then
    begin
      try
        ACBrNFeDANFeESCPOS.ACBrNFe := acbrnfe;
        {DM.acbrpsprntr.Modelo          := TACBrPosPrinterModelo( strtoint( fModeloImp ) );//0 texto - 1 epson -2 Bematech -3 Daruma -4 elgin -5 Diebold
        DM.acbrpsprntr.Device.Porta    := fPortaImp;
        DM.acbrpsprntr.Device.Baud     := StrToInt( fBaudeImp );
        DM.acbrpsprntr.IgnorarTags     := false;}
        //faz com que o componente abra e feche a porta conforme a necessidade automaticamente
        //novo para teste
        DM.acbrpsprntr.Modelo                     := TACBrPosPrinterModelo( strtoint( fModeloImp ) );
        DM.acbrpsprntr.Porta                      := fPortaImp;
        DM.acbrpsprntr.Device.Porta               := fPortaImp;
        DM.acbrpsprntr.ArqLOG                     := '';
        DM.acbrpsprntr.LinhasBuffer               := 0;
        DM.acbrpsprntr.LinhasEntreCupons          := fLinEntreCupom;
        DM.acbrpsprntr.EspacoEntreLinhas          := fEspEntreLinha;
        DM.acbrpsprntr.ColunasFonteNormal         := fNumColunas;
        DM.acbrpsprntr.ControlePorta              := false;
        DM.acbrpsprntr.TraduzirTags               := true;
        DM.acbrpsprntr.IgnorarTags                := false;
        DM.acbrpsprntr.CortaPapel                 := true;
        DM.acbrpsprntr.PaginaDeCodigo             := TACBrPosPaginaCodigo( 2 );//TACBrPosPaginaCodigo( cbxPagCodigo.ItemIndex );
        //gaveta
        if ( fECFGaveta = true ) then
        begin
          DM.acbrpsprntr.ConfigGaveta.SinalInvertido:= fECFSinalInvert;
          DM.acbrpsprntr.ConfigGaveta.TempoON       := 50;
          DM.acbrpsprntr.ConfigGaveta.TempoOFF      := 200;
        end;
        //gaveta
        DM.acbrpsprntr.ConfigBarras.MostrarCodigo := false;//cbHRI.Checked;
        DM.acbrpsprntr.ConfigBarras.LarguraLinha  := 0;//seBarrasLargura.Value;
        DM.acbrpsprntr.ConfigBarras.Altura        := 0;//seBarrasAltura.Value;
        DM.acbrpsprntr.ConfigBarras.Margem        := 0;//seBarrasAltura.Value;
        DM.acbrpsprntr.ConfigBarras.MostrarCodigo := false;

        DM.acbrpsprntr.ConfigQRCode.Tipo          := 2;//seQRCodeTipo.Value;
        DM.acbrpsprntr.ConfigQRCode.LarguraModulo := 4;//seQRCodeLarguraModulo.Value;
        DM.acbrpsprntr.ConfigQRCode.ErrorLevel    := 0;//seQRCodeErrorLevel.Value;

        DM.acbrpsprntr.ConfigLogo.KeyCode1        := 32;//seLogoKC1.Value;
        DM.acbrpsprntr.ConfigLogo.KeyCode2        := 32;//seLogoKC2.Value;
        DM.acbrpsprntr.ConfigLogo.FatorX          := 1;//seLogoFatorX.Value;
        DM.acbrpsprntr.ConfigLogo.FatorY          := 1;//seLogoFatorY.Value;
        DM.acbrpsprntr.ConfigLogo.IgnorarLogo     := true;//seLogoFatorY.Value;
        //fin novo para teste
        DM.acbrpsprntr.Ativar;   //novo para teste
        //novo para teste
      except
        on E: Exception do
          application.MessageBox( pchar('erro nao ativar o impressãio ' + E.Message), pchar('Atenção!'), mb_ok + MB_ICONERROR);
      end;
    end;
    if ( ( pAbreGaveta = true ) and ( pMiniImpr = true ) ) then
      DM.acbrpsprntr.AbrirGaveta;
  end;
end;


function TDM.ConfigurarNFCe_Imp( pOffiLine, pAbreGaveta : boolean ): boolean;
var
  vIngTagsForm, vImpUmaLinha, ImpDescAcres,
  vDANFERes : boolean;
  cNumVisas : smallint;
begin
  try
    cNumVisas := 1;
    result := false;
    try

        if ( pMiniImpr = true ) then
        begin
          dm.PosPrinterConfigurarPorta;
          //dm.PosPrinterConfigurarPorta;
          {DM.acbrpsprntr.Modelo          := TACBrPosPrinterModelo( strtoint( fModeloImp ) );//0 texto - 1 epson -2 Bematech -3 Daruma -4 elgin -5 Diebold
          DM.acbrpsprntr.Device.Porta    := fPortaImp;
          DM.acbrpsprntr.Device.Baud     := StrToInt( fBaudeImp );
          DM.acbrpsprntr.IgnorarTags     := vIngTagsForm;
         //faz com que o componente abra e feche a porta conforme a necessidade automaticamente
          DM.acbrpsprntr.ControlePorta   := false;}
          if pOffiLine = true then
          begin
            while cNumVisas <= 2 do
            begin
              DM.ACBrNFe.DANFE.ImprimirItens              := vDANFERes;
              DM.ACBrNFeDANFeESCPOS.ImprimeEmUmaLinha     := vImpUmaLinha;
              DM.ACBrNFeDANFeESCPOS.ImprimeDescAcrescItem := ImpDescAcres;

              if ( cNumVisas = 1 ) then
                DM.ACBrNFeDANFeESCPOS.ViaConsumidor       := true
              else
                DM.ACBrNFeDANFeESCPOS.ViaConsumidor       := false;

              DM.ACBrNFeDANFeESCPOS.vTroco                := dm.vVlParaTroco;
              DM.ACBrNFe.NotasFiscais[0].Imprimir;
              cNumVisas := cNumVisas + 1;
            end;
          end
          else
          begin
            DM.ACBrNFe.DANFE.ImprimirItens              := vDANFERes;
            DM.ACBrNFeDANFeESCPOS.ImprimeEmUmaLinha     := vImpUmaLinha;
            DM.ACBrNFeDANFeESCPOS.ImprimeDescAcrescItem := ImpDescAcres;
            DM.ACBrNFeDANFeESCPOS.ViaConsumidor         := false;
            DM.ACBrNFeDANFeESCPOS.vTroco                := dm.vVlParaTroco;
            DM.acbrpsprntr.Ativar;
            DM.ACBrNFe.NotasFiscais[0].Imprimir;
          end;
          if ( ( pAbreGaveta = true ) and ( pMiniImpr = true ) ) then
            DM.acbrpsprntr.AbrirGaveta;
        end;

      end;
      qryConfNFeImp.close;
      result := true;
    except
      result := false;
    end;
  finally
    DM.acbrpsprntr.Desativar;
  end;
end;

  • Fundadores
Postado
17 horas atrás, tiago Selecto disse:

tenho pouca experiencia, mas acho que vai ser mais seguro pelo espos, alguma sugestão? 

O ideal é você ter uma configuração para ambos os tipos  ( EscPos e Fortes )

Estude detalhadamente os fontes do Projeto de exemplo: SATTeste... ele le e salva a cofiguração do Tipo de mecanismo de impressão...

Para usar o EscPos, você precisa saber qual a exata configuração da porta da impressora... Recomendo usar o projeto Demo PosPrinterTeste, para testar a impressão em EscPos

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.

Postado

Opa Amigos

 

Estive estudando os codigos sugeridos e dentre eles o DemoDanfeEscpos, onde inicialmente a conf e o entendimento e simples, porem ao copilar e tentar imprimir

ele me retorna o mesmo problema Communication erro 1: Função incorreta.

o que precisa para copilar este exemplo?

Pois ainda o componente esta inativo

Penso eu a seguinte logica:

Quando leio as configurações do compontes passando os parametros de porta e velocidade

  ACBrPosPrinter1.Modelo        := TACBrPosPrinterModelo(cbxModelo.ItemIndex);
  ACBrPosPrinter1.Device.Porta  := cbxPorta.Text;
  ACBrPosPrinter1.Device.Baud   := StrToInt(cbxVelocidade.Text);
  ACBrPosPrinter1.IgnorarTags   := chkIgnorarTagsFormatacao.Checked;
  ACBrPosPrinter1.ControlePorta := True; 

ele deveria deixar ser ativado pra a impressão?

em   ACBrPosPrinter1.Ativar;

o que esta faltando ao exemplo?

 

 

 

 

 

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