Ir para conteúdo
  • Cadastre-se

dev botao

Nova Ecf Bematech Mp4200 Th Fi


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

Recommended Posts

  • Fundadores

Sim, o ACBrECFEscECF também faz comunicação direta com a Serial...

 

Mas precisamos de um driver para fazer a USB se comportar como Serial, correto ??

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

Sim, o ACBrECFEscECF também faz comunicação direta com a Serial...

 

Mas precisamos de um driver para fazer a USB se comportar como Serial, correto ??

 

Correto.

 

Se for possivel você poderia me dar uma dica de como realizar a implementação desta conexão utilizando a BemaFI32.so junto com a ACBr?

Link para o comentário
Compartilhar em outros sites

  • Fundadores

Não tenho a menor ideia... nunca tentei...

 

Imaginei que a Bematech providenciasse um driver para USB para Linux... Possivelmente criando uma porta em /dev/ttyUSB0

 

Acho que apenas o suporte da Bematech pode lhe ajudar nessa tarefa...

 

Do lado do ACBr a "brincadeira" começa apenas quando você realmente tiver uma porta Serial disponível... como por exemplo: "/dev/ttyUSB0"

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

  • 2 anos depois...

Não tenho a menor ideia... nunca tentei...

 

Imaginei que a Bematech providenciasse um driver para USB para Linux... Possivelmente criando uma porta em /dev/ttyUSB0

 

Acho que apenas o suporte da Bematech pode lhe ajudar nessa tarefa...

 

Do lado do ACBr a "brincadeira" começa apenas quando você realmente tiver uma porta Serial disponível... como por exemplo: "/dev/ttyUSB0"

Daniel.

Consegui criar a conexão serial /dev/ttyUSB0 que você comentou.

No ACBr selecionei o modelo esfEscECF e na porta  coloquei a '/dev/ttyUSB0'

Mas quando rodo a aplicação é apresentado pelo ACBr a mensagem:

Communication error 22: Invalid argument

O log do ACBr tem o conteúdo:

--------------------------------------------------------------------------------
ATIVAR - 30/09/15 09:59:47:799 - Modelo: EscECF - Porta: /dev/ttyUSB0 - TimeOut: 20
         Device: BAUD=9600 DATA=8 PARITY=N STOP=1 HANDSHAKE=DTR/DSR MAXBANDWIDTH=0
--------------------------------------------------------------------------------

O que pode estar causando este problema?

 

Link para o comentário
Compartilhar em outros sites

  • 5 meses depois ...

Boa tarde,

Referente a esta mesma impressora Bematech Mp4200 TH FI II. Estamos recebendo um erro ao imprimir o Relatório Gerencial. Assim como mostra abaixo ou na imagem anexo:

Erro retornado pela Impressora: BEMATECH

Categoria: 2-Erro em parâmetro do comando

Motivo: 2-Falta parâmetro no comando.

 

Analisando o código, notei que na classe TACBrECFEscECF temos uma constante cEscECFMaxBuffer = 512.

Quando esta classe executa o método TACBrECFEscECF.LinhaRelatorioGerencial, ao percorrer a linha "while Length( Linha ) > 0 do", ele verifica o seguinte:

- Se o tamanho da linha for maior que o tamanho na constante cEscECFMaxBuffer, ele pega a posição da ultima quebra de linha.

- Logo ele faz um copy da linha: copy( Linha, 1, posicaodaUltimaQuebraLinha) 

O problema é que quando a ultima posição da string resultante, e justamente uma quebra de linha (LF) acontece o erro.

Abaixo estou colocando o valor que é atribuido a variável Buffer após o corte pelo tamanho máximo definido na constante cEscECFMaxBuffer:

' '#$D#$A'            NOTA PROMISSORIA            '#$D#$A'Numero         Vencimento          Valor'#$D#$A'056448         10/10/2015         129,33'#$D#$A' '#$D#$A'No  dia  10  de outubro de 2015, pagarei'#$D#$A'por  esta  unica  via NOTA PROMISSORIA a'#$D#$A'aaaaaaa Comercio De bbbbbbbb Ltda Epp'#$D#$A'CPF/CNPJ:  78.624.608/0002-65  ou  a sua'#$D#$A'ordem,  a  quantia  de  cento  e vinte e'#$D#$A'nove  reais  e trinta e tres centavos em'#$D#$A'moeda  corrente  deste  pais, pagavel em'#$D#$A'BLUMENAU-SC.                            '#$D#$A#$D#$A' '#$D#$A'Emitente: AAAAAAAAAA BBBBBB CCCCCCCCC'#$D#$A

Outra coisa, mesmo sabendo que não devo fazer isso, mas colocando outros valores para a constante afim de testar, como por exemplo: 520, 492. Se a última posição for uma quebra de linha (LF), ele também dará o erro.

Gostaria de pedir uma ajuda para resolver este problema.

Eu consegui ver uma solução mais não sei se é a melhor, testei e funcionou.

Na hora de capturar a string na variável Buffer, verificar:

if copy( Linha, cEscECFMaxBuffer, 1) = LF then --  se o ultimo caráter é quebra de linha(LF)
  Buffer := copy( Linha, 1, P-1) -- copiar da primeira posição ate a ultima posição sem considerar a quebra de linha
else
  Buffer := copy( Linha, 1, P)  ;

Atte,

Muito Obrigada,

Erro_impressora_bematech_mp4200_th_Fi_II.png

Link para o comentário
Compartilhar em outros sites

  • Fundadores

Obrigado,

Apliquei um possível "workaround", para esse bug da Bematech, baseado nas suas sugestões...

Por favor teste com a Unit em anexo

 

ACBrECFEscECF.pas

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

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