Ir para conteúdo
  • Cadastre-se

dev botao

Problema com a impressora POS Bematech MP4200


Ver Solução Respondido por Intelliware,
  • Este tópico foi criado há 2030 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.

Recommended Posts

  • Membros Pro

Bom dia pessoal,

Temos um cliente que possui a impressora POS Bematech MP4200. A mais de uma semana que está dando problema em ambos os caixas do cliente de transmissão. O cliente efetua a venda de alguns cupons e acontece erro na impressora. Olhando os logs do nosso sistema, temos:

----------------------------------------------------------------------------------------
[17/08/2018 18:16:54]
[VALIDARATIVOSAT] A impressora não está em operação.
----------------------------------------------------------------------------------------

Analisando o log do componente ACBrPOSPrinter, foi verificado que em todos os momentos que recebemos este erro, é logado:

-- 17/08 18:16:19:811 - TraduzirTag(</corte_total>) ->  [LF] [LF] [LF] [LF] [LF] [LF] [LF][ESC]w
-- 17/08 18:16:19:826 - EnviarStringDevice( [ESC]@[GS][249] [NUL][ESC]2[ESC]a[SOH][FS]p[SOH][NUL][LF][ESC]************[ESC]F[LF][ESC][15]**************[LF][ESC]a[SOH][ESC][15]RE Informatica Ltda[LF][ESC]a[SOH][ESC][15]www.iws.com.br[LF][ESC]@[GS][249] [NUL][ESC]2[LF] [LF] [LF] [LF] [LF] [LF] [LF] [LF][ESC]w[LF])
-- 17/08 18:16:24:818 - TX -> [GS][248]1
-- 17/08 18:16:25:832 - TX -> [GS][248]1
-- 17/08 18:16:26:846 - TX -> [GS][248]1
-- 17/08 18:16:27:860 - TX -> [GS][248]1
-- 17/08 18:16:28:874 - TX -> [GS][248]1
-- 17/08 18:16:29:888 - TX -> [GS][248]1
-- 17/08 18:16:30:902 - TX -> [GS][248]1
-- 17/08 18:16:31:916 - TX -> [GS][248]1
-- 17/08 18:16:32:930 - TX -> [GS][248]1
-- 17/08 18:16:33:944 - TX -> [GS][248]1
-- 17/08 18:16:34:958 - TX -> [GS][248]1
-- 17/08 18:16:35:972 - TX -> [GS][248]1
-- 17/08 18:16:36:986 - TX -> [GS][248]1
-- 17/08 18:16:38:000 - TX -> [GS][248]1
-- 17/08 18:16:39:014 - TX -> [GS][248]1
-- 17/08 18:16:40:028 - TX -> [GS][248]1
-- 17/08 18:16:41:042 - TX -> [GS][248]1
-- 17/08 18:16:42:056 - TX -> [GS][248]1
-- 17/08 18:16:43:070 - TX -> [GS][248]1
-- 17/08 18:16:44:084 - TX -> [GS][248]1
-- 17/08 18:16:45:098 - TX -> [GS][248]1
-- 17/08 18:16:46:112 - TX -> [GS][248]1
-- 17/08 18:16:47:126 - TX -> [GS][248]1
-- 17/08 18:16:48:140 - TX -> [GS][248]1
-- 17/08 18:16:49:154 - TX -> [GS][248]1
-- 17/08 18:16:50:168 - TX -> [GS][248]1
-- 17/08 18:16:51:182 - TX -> [GS][248]1
-- 17/08 18:16:52:196 - TX -> [GS][248]1
-- 17/08 18:16:53:210 - TX -> [GS][248]1

Observei que ao efetuar a ativação do equipamento são utilizados estes parâmetros:

--------------------------------------------------------------------------------
ATIVAR - 17/08/18 18:24:58:995
  - Modelo.: EscBematech
  - TimeOut: 3
  - Serial.: COM7 - BAUD=9600 DATA=8 PARITY=N STOP=1 HANDSHAKE= MAXBANDWIDTH=0 SENDBYTESCOUNT=0 SENDBYTESINTERVAL=0
--------------------------------------------------------------------------------

Gostaria da opinião de vocês sobre este assunto. Desde já agradeço.

 

Link para o comentário
Compartilhar em outros sites

  • Fundadores

Aparentemente você está tentando LerStatus da impressora, antes da Impressão...  Isso pode ser feito de forma automática pelo componente, se estiver marcada a opção: VerificarImpressora := True

Porém, o componente tenta por padrão, apenas 1 Leitura... e no seu Log há várias tentativas...

Verifique se nos seus fontes há uma chamada ao método abaixo, com um numero alto de tentativas...

function TACBrPosPrinter.LerStatusImpressora(Tentativas: Integer ): TACBrPosPrinterStatus; 

 

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

  • Membros Pro

Boa tarde Daniel,

Realmente, não tinha visto que existe o parâmetro 'Tentativas'. Eu fiz um loop interno para em caso de erro, efetuar uma nova tentativa. Vou efetuar uma alteração para utilizar a informação do próprio componente. Enquanto isso, adicionei uns logs para tentar validar o status que a impressora POS está retornando, enquanto também não atualizo para a versão que você subiu hoje de manhã.

-- ACBrPosPrinter --
[*] Métodos LerInfoImpressora e LerStatusImpressora modificados para inserir
    Entrada e Resultado no Log

Agradeço mais uma vez a ajuda. Qualquer informação nova, posto aqui.

  • Curtir 3
Link para o comentário
Compartilhar em outros sites

  • Membros Pro

Boa tarde Daniel,

A impressora retornou em log o seguinte problema:

[22/08/2018 15:46:25]
LOG: TX -> [GS][248]1
----------------------------------------------------------------------------------------

[22/08/2018 15:46:25]
[POS_VALIDARSTATUS][VERIFICARSTATUSERRO](#01)Status detectado: stErroLeitura
----------------------------------------------------------------------------------------

Pedi para habilitar a opção de ControlePorta da ACBrPOSPrinter e também instalar a versão mais atual do driver da impressora. Seria este o procedimento correto ou teria alguma outra opção que poderia ser validado no cliente?

 

Link para o comentário
Compartilhar em outros sites

  • Fundadores

Provavelmente há algum problema no Driver USB Serial, que apresenta falha na leitura de informações, em algumas situações...

Infelizmente não há o que possa ser feito do Lado do ACBr... ele está tendo problemas para ler informações da COM virtual...

Experimente deixar a opção ControlePorta desativada (pode ser que o abrir/fechar da porta não seja bom para esse tipo de driver)

Se essa impressora dispor de uma COM física, pode ser melhor...

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

  • Membros Pro

Daniel,

Realmente, setar a opção ControlePorta gerou uma série de erros adicionais e foi desabilitada. 

Foi adicionada uma interface serial na impressora com o objetivo de eliminar a dependência do driver conversor da Bematech. No entanto, começou a ocorrer o seguinte erro:

----------------------------------------------------------------------------------------
[24/08/2018 10:29:06]
[POS_ImpressaoGeral]FALHA ao imprimir: Erro ocorrido durante a impressão:
Communication error 9997: Timeout during operation
----------------------------------------------------------------------------------------

Em anexo, foi adicionado o arquivo de log da POS na data e hora em questão. Testamos com velocidade de 9600, 38400 e 115200, controlando fluxo via hardware e sem. 

Somente na velocidade de 9600, temos impressão do cupom fiscal eletrônico e do cancelamento do mesmo, no entanto, se tentarmos, utilizar o comando ACBrPosPrinter.Imprimir(texto), é gerado o erro acima em todos os casos. Nas outras velocidades a impressora nem é ativada.

ACBrLog20180824.txt

Editado por Intelliware
Link para o comentário
Compartilhar em outros sites

  • Fundadores

Você precisa realmente que a comunicação seja serial ? ( Sim se você lê informações da Impressora )

Veja esse tópico sobre a impressão em Modo RAW 

 

Experimente ainda, diminuir o Buffer de envio na Serial... Veja:

 

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

  • Membros Pro

Daniel,

Na verdade, estou tentando resolver o erro de transmissão, que é o erro de leitura que ocorre na porta emulada. Já trocamos de porta e atualizamos o driver, revisamos procedimentos, mas o cliente ainda continua reclamando que têm dia que trabalha normalmente, de repente, apresenta erro de comunicação. Com essa informação, estamos tentando utilizar a opção serial para ver se eliminamos este erro intermitente.

Link para o comentário
Compartilhar em outros sites

  • Membros Pro

Daniel, boa tarde,

Coloquei no cliente a seguinte configuração:

ACBrPOSPrinter.Device.SendBytesCount=1024
ACBrPOSPrinter.Device.SendBytesInterval=100
ACBrPOSPrinter.Device.TimeOut=30
ACBrPOSPrinter.LinhasBuffer=30

Estabilizou, pois estava ocorrendo problema de porta a todo momento, mas mesmo assim houve em 1 dia, dois erros de leitura da porta. Em relação aos valores acima, acha que poderia melhorar algum valor ou até mesmo setar alguma outra propriedade? Desde já agradeço.

Link para o comentário
Compartilhar em outros sites

  • Fundadores

Os valores parecem bem razoáveis...

Será que não há algum problema com o cabo da impressora ? Ou ainda outro aplicativo, que bloqueia temporariamente o acesso a essa porta Serial ?

 

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

  • Membros Pro

Bom dia Daniel,

O cabo da impressora é novo, foi trocado. Foi adicionado a pasta e os arquivos de execução na exceção do anti-vírus. Olhando nos aplicativos instalados na máquina, não conseguimos identificar nenhum que fizesse algum acesso na porta.

Só adicionando a parte do log aqui em que foi reportado os dois únicos problemas de ontem:

CASO 01)

(** LOG SISTEMA **)
[28/08/2018 15:12:13]
[VALIDARATIVOSAT] A impressora não está em operação.

(** LOG POS **)
----------------------------------------------------------------------------------------
[28/08/2018 15:12:11]
[POS_VALIDARSTATUS][VERIFICARSTATUSERRO](#01)Status detectado: stErroLeitura
----------------------------------------------------------------------------------------
[28/08/2018 15:12:12]
LOG: TX -> [GS][248]1
----------------------------------------------------------------------------------------
[28/08/2018 15:12:12]
[POS_VALIDARSTATUS][VERIFICARSTATUSERRO](#01)Status detectado: stErroLeitura
----------------------------------------------------------------------------------------

CASO 02)

(** LOG SISTEMA **)
[28/08/2018 16:50:12]
[VALIDARATIVOSAT] A impressora não está em operação.

(** LOG POS **)
----------------------------------------------------------------------------------------
[28/08/2018 16:50:10]
[POS_VALIDARSTATUS][VERIFICARSTATUSERRO](#01)Status detectado: stErroLeitura
----------------------------------------------------------------------------------------
[28/08/2018 16:50:11]
LOG: TX -> [GS][248]1
----------------------------------------------------------------------------------------
[28/08/2018 16:50:11]
[POS_VALIDARSTATUS][VERIFICARSTATUSERRO](#01)Status detectado: stErroLeitura
----------------------------------------------------------------------------------------

Notei que no comando ativar, mostrado abaixo:

--------------------------------------------------------------------------------
ATIVAR - 28/08/18 16:50:50:725
  - Modelo.: EscBematech
  - TimeOut: 30
  - Serial.: COM7 - BAUD=115200 DATA=8 PARITY=N STOP=1 HANDSHAKE= MAXBANDWIDTH=0 SENDBYTESCOUNT=1024 SENDBYTESINTERVAL=100
--------------------------------------------------------------------------------

A propriedade MAXBANDWIDTH encontra-se zerada. Ela poderia ocasionar algum tipo de problema de comunicação?

Link para o comentário
Compartilhar em outros sites

  • Fundadores

Pode ser ainda, o caso da impressora não estar pronta para receber o comando... Exemplo: quando ela abre a gaveta, ela fica alguns milissegundos sem conseguir receber comandos...

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

  • Fundadores

Sim consegue... ela fica apenas alguns poucos milissegundos indisponível...

O que quis dizer, é que a falha na leitura pode se dar em algum momento semelhante ao citado 

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

  • Membros Pro
  • Solution

Daniel, bom dia, 

Desculpa a demora. Efetuamos testes com a gaveta e foi normal, não houve perda de comunicação neste processo. Após setar as configurações acima, o problema de perda de comunicação tinha caído para 2 por dia. No entanto, no começo da semana, o cliente voltou a entrar no atendimento dizendo que estava novamente com problema toda hora, analisando os logs, era o mesmo erro de leitura da porta.

Como última solução, o pessoal do suporte, adquiriu uma impressora EPSON e levou para o cliente, uma vez que os outros caixas são desta marca e não tivemos nenhuma reclamação de perda de comunicação.

Editado por Intelliware
  • Curtir 2
Link para o comentário
Compartilhar em outros sites

  • Este tópico foi criado há 2030 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.
Visitante
Este tópico está agora fechado para novas respostas
×
×
  • 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.

The popup will be closed in 10 segundos...