Ir para conteúdo
  • Cadastre-se

dev botao

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

Recommended Posts

  • Membros Pro
Postado

Bom dia

Estou gerando uma NFC-e,  e neste documento contem 200 itens com valor unitário de 5,00 reais,totalizando assim 1.000 reais, e informo um desconto de 200 reais,  aonde o mesmo é feito um rateio de 1 real em cada item.

Na impressão da NFC-e,  o desconto é impresso em uma linha adicional em cada item, mas ao chegar no item de sequencia 181 o mesmo para de imprimir, ou seja não termina a impressão da NFC-e.

Gostaria de verificar se nas units ACBrNFeDANFeESCPOS ou ACBrPosPrinter existe algum limite de linhas para serem impressa. no exemplo acima como são 200 itens serão impressas 400 linhas uma para o produto e outra para o desconto.

OBS 1: Fazendo a NFC-e sem o desconto imprime corretamente.

OBS 2: Verifiquei os xmls com e sem descontos,  e os 200 itens são gerados.

 

  • Membros Pro
Postado
Em 03/03/2016 at 11:03, Juliomar Marchetti disse:

Bom dia

acho que você deve de verificar é se a impressora em si tem limites!

pegue o demo e rode uma impressão de mais de 400 linhas e veja o que ocorre

Boa tarde Juliomar, 

 

Entrei em contato com o suporte ao desenvolvedor Daruma,  e me enviaram o seguinte:

" o que está acontecendo é que você está usando uma impressora "Daruma DR 700 - 'Le'"  e como ela tem um fluxo de impressão menor do que uma 'He', por exemplo, ela precisa que esse alinhamento do controle de fluxo esteja certinho, para não perder dados, pelo seu sistema vocês vão precisar definir o controle de fluxo na hora de criar o Handle da porta serial também,para não perder dados"

Também me passaram o seguinte comando para mandar um arquivo txt para a impressora   pelo dos com o arquivo da NFCe que fiz gerar pelo sistema colocando o comando no ACBrPosPrinter para gerar o arquivo do mesmo(anexei o arquivo gerado aquiNFCE.TXT):

"MODE COM4:115200,N,8,1,X
type c:\ACCERA\NFCE.TXT > COM4"

Com estes comando pelo DOS deu certo.

Teria que verificar para alterar no ACBrPosPrinter,  para que execute também este processo antes da impressão,  tentei fazer mas não obtive muito sucesso nos meus resultados.

Gostaria de verificar se tem alguma ideia do que possa ser feito neste caso.

 

 

 

 

 

  • Moderadores
Postado

Acho que você não entendeu o que fizeram, no primeiro comando "mode" eles configuraram os parâmetros da porta COM e no segundo simplesmente enviaram o arquivo para a porta.

Você não tem que executar estes comandos, você deve sim configurar corretamente o ACBrPosPrinter conforme os parâmetros que eles passaram, para isso você deve setar utilizar a propriedade Device do ACBrPosPrinter, segue exemplo:

  ACBrPosPrinter1.Device.Porta     := 'COM4';
  ACBrPosPrinter1.Device.Baud      := 115200;
  ACBrPosPrinter1.Device.Data      := 8;
  ACBrPosPrinter1.Device.Parity    := 'N';
  ACBrPosPrinter1.Device.Stop      := s1;         // s1, s1eMeio, s2
  ACBrPosPrinter1.Device.HandShake := hsXON_XOFF; // hsNenhum, hsXON_XOFF, hsRTS_CTS, hsDTR_DSR

 

Equipe ACBr

Régys Borges da Silveira

http://www.regys.com.br

certificacao delphicertificacao delphi
  • Membros Pro
Postado
Em 06/03/2016 at 22:58, Régys Silveira disse:

Acho que você não entendeu o que fizeram, no primeiro comando "mode" eles configuraram os parâmetros da porta COM e no segundo simplesmente enviaram o arquivo para a porta.

Você não tem que executar estes comandos, você deve sim configurar corretamente o ACBrPosPrinter conforme os parâmetros que eles passaram, para isso você deve setar utilizar a propriedade Device do ACBrPosPrinter, segue exemplo:


  ACBrPosPrinter1.Device.Porta     := 'COM4';
  ACBrPosPrinter1.Device.Baud      := 115200;
  ACBrPosPrinter1.Device.Data      := 8;
  ACBrPosPrinter1.Device.Parity    := 'N';
  ACBrPosPrinter1.Device.Stop      := s1;         // s1, s1eMeio, s2
  ACBrPosPrinter1.Device.HandShake := hsXON_XOFF; // hsNenhum, hsXON_XOFF, hsRTS_CTS, hsDTR_DSR

 

Tentamos passar as propriedades conforme especificado mas não funcionou a impressão,  continuou imprimindo somente uma parte..

  • Membros Pro
Postado
17 horas atrás, Régys Silveira disse:

Tentou mudar o hanshake?

Eu coloquei a observação justamente para isso, saber quais são e testar.

No caso testei com todas as opções, mas conforme passado pelo pessoal da daruma é  hsXON_XOFF .

  • Membros Pro
Postado
16 horas atrás, Régys Silveira disse:

Tente diminuir o buffer da porta serial, talvez ajude, testei aqui em um DR700 e uma DR800 e está normal, 200 itens impressos corretamente.

Eu não sei se você está utilizando o demo do ACBr PosPrinter. Este funciona normalmente, testei aqui e imprimiu os 400 itens corretamente, porém passando estes valores para as propriedades em tempo de execução aí então não funciona, já debuguei aqui e os valores passados estão sendo enviados corretamente.

Segue em anexo o arquivo gerado pelo nosso sistema (onde não funciona a impressão), que foi utilizado para imprimir pelo demo (que funciona).

NFCE.TXT

  • Membros Pro
Postado
Em 09/03/2016 at 18:23, Régys Silveira disse:

Provavelmente é alguma configuração que você não está fazendo corretamente no PosPrinter, porque como eu disse aqui está normal e você disse que testou com o Demo e também funcionou.

Olá Régys,

Então, eu andei dando uma olhada no nosso sistema e debugando através dos fontes do ACBr e percebi que não era passado o TimeOut (Tempo Limite) para o PosPrinter. Em algumas buscas na internet eu percebi que algumas pessoas setavam o mesmo com 1000, setei e aparentemente funcionou (teremos que realizar mais alguns testes). As configurações que estou passando ficaram +- assim:

PS.: Tive que declarar o ACBrDevice no uses da minha unit também.

      PosPrinter.Device.Porta           := 'COMX'; //Porta COM 
      PosPrinter.Device.Baud           := 115200; //Bits por Segundo

      PosPrinter.Device.Parity          := pNone; //Paridade
      PosPrinter.Device.Data            := 8; //Bits de Dados
      PosPrinter.Device.Stop            := s1; //Bits de Parada
      PosPrinter.Device.TimeOut      := 1000; //Tempo Limite
      PosPrinter.Device.HandShake := hsXON_XOFF; //Controle de Fluxo

 

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