Jump to content

dev botao

Problema com a impressora POS Bematech MP4200


Intelliware
Go to solution Solved by Intelliware,
  • Este tópico foi criado há 2194 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 to comment
Share on other 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 to comment
Share on other 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.

  • Like 3
Link to comment
Share on other 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 to comment
Share on other 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 to comment
Share on other 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

Edited by Intelliware
Link to comment
Share on other 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 to comment
Share on other 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 to comment
Share on other 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 to comment
Share on other 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 to comment
Share on other 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 to comment
Share on other 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 to comment
Share on other 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 to comment
Share on other 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.

Edited by Intelliware
  • Like 2
Link to comment
Share on other sites

  • Este tópico foi criado há 2194 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.
Guest
This topic is now closed to further replies.
×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.