Ir para conteúdo
  • Cadastre-se

dev botao

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

Recommended Posts

Postado

Boa tarde a Todos.

Estou com o seguinte problema com a impressora Bematech

Ao enviar um comando por exemplo abrir um cupom fiscal retorna que o Componente ACBrECF esta ocupado, o mesmo acontece no fechamento,

e como eu não tenho uma impressora da Bematech para os testes somente uma da Daruma não sei o que fazer.

Eu criei uma variável para determinar um tempo de retardo que coloco no "ACBrECF.IntervaloAposComando" um tempo para tentar resolver, mas nem sempre isso resolve,

E isso só acontece com as impressoras da Bematech, nas Daruma, Espson, Elgim, Sweda isso não acontece.

Alguém tem alguma dica para este problema?

Grato.

Wandarlei Michelon

Postado

Já verificou a velocidade e as configurações da porta?

Não existe nenhum outro aplicativo utilizando a porta de comunicação da impressora?

Com o ECFTeste ocorre também o erro?

Verificou no arquivo de log do ACBrECF?

Oi Régys,

A velocidade é de 9600 pois segundo o suporte da Bematech não tem como alterar a velocidade da porta serial.

Não o único aplicativo utilizando a porta é o emissor de cupons.

Não fiz o teste com o ECFTeste pois a impressora esta em produção nos clientes.

Em relação ao Log não gero, vou habilitar.

Se houver mais algum caminho.

Grato.

Wandarlei Michelon

  • Consultores
Postado

e como eu não tenho uma impressora da Bematech para os testes somente uma da Daruma não sei o que fazer.

Então está testando com o emulador? Usando cabo ou emulador de porta Seriais? qual emulador?

[]'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.
  • 2 semanas depois ...
Postado

Poste o log, assim que o tiver, para darmos uma olhada.

Verificou se o cabo de comunicação estão OK?

Boa tarde Régys e Elton,

Segue o arquivo de log.

Este problema ocorre nos clientes usando cabo serial,

Aqui eu utilizo uma Daruma, mas no emulador da Bematech utilizando porta serial (com um cabo ligando as 2 seriais sem necessidade de emulador), raramente ocorre.

grato.

log_ecf.zip

Wandarlei Michelon

  • Consultores
Postado

Olá Wandarlei,

Acho que você está fazendo chamadas dos comandos antes do ACBrECF responder. Veja parte do log abaixo:

-- 10:22:48 GrandeTotal
TX -> [STX][ENQ][NUL][FS]#[ETX]B[NUL]
10:22:48 RX -- 10:22:48 AbreCupom( 00.122.907/0001-23, JOINT BILL REP. COMERCIAIS LTDA, )
-- 10:22:49 Estado
----------------- ERRO -----------------
Componente ACBrECF ocupado
Aguardando resposta do comando anterior
----------------------------------------[/code]

Repare que logo depois do comando GrandeTotal existe as linhas TX e RX. Mas isso não ocorre depois de AbreCupom, onde vemos outro comando Estado antes da resposta do ACBrECF.

Como você está fazendo as chamadas?

[]'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

Olá Wandarlei,

Acho que você está fazendo chamadas dos comandos antes do ACBrECF responder. Veja parte do log abaixo:

-- 10:22:48 GrandeTotal

            TX -> [STX][ENQ][NUL][FS]#[ETX]B[NUL]

   10:22:48 RX <- [NUL][NUL][NUL][NUL][NUL]P[146][134][1][NUL][NUL][NUL][NUL]

-- 10:22:48 AbreCupom( 00.122.907/0001-23, JOINT BILL REP. COMERCIAIS LTDA,  )

-- 10:22:49 Estado

----------------- ERRO -----------------

Componente ACBrECF ocupado

Aguardando resposta do comando anterior

----------------------------------------
Repare que logo depois do comando GrandeTotal existe as linhas TX e RX. Mas isso não ocorre depois de AbreCupom, onde vemos outro comando Estado antes da resposta do ACBrECF. Como você está fazendo as chamadas?
Boa tarde Elton O código é este:

    try

    ...  

    DM.ACBrECF.AbreCupom(vgs_CNPJ_Cli, vgs_Nome_Cli, vgs_Endereco_Cli);

  except

    on e: exception do

    begin

      Application.MessageBox(PChar(e.message), PChar(vgs_Mensagem_Atencao), MB_OK + MB_ICONSTOP);

      f_Inicia_Venda := False;

      Exit;

    end;

  end;

  // Retorna o numero do cupom

  try

    vgb_Gravar_Operacao := True;

    vgs_Nro_Cupom := DM.ACBrECF.NumCupom;


    if not f_VerificaDataImpressora then

    begin

      f_Inicia_Venda := False;

      Exit;

    end;

    //se o retorno da impressora esta ok, grava operação

    if vgb_Gravar_Operacao then

    begin

      try

        vgi_Numero_Caixa := StrToInt(DM.ACBrECF.UsuarioAtual); 

      except

        vgi_Numero_Caixa := 0;

      end;

      vls_Tipo_Venda := '';

      p_Insere_Cabecalho;

    end;

  except

    EDT_Codigo.Enabled := True; //por seguranca

  end;

  f_Inicia_Venda := True;

feito isso eu faço a inserção das peças no cupom consultando na base conforme a digitação do operador.

Grato.

Wandarlei Michelon

  • Consultores
Postado

No código que você enviou não há nenhuma chamada à função de ESTADO do ECF depois de AbreCupom.

Você possui algum timer ou alguma outra trhead que poderia estar verificando o estado atual do ECF?

[]'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

No código que você enviou não há nenhuma chamada à função de ESTADO do ECF depois de AbreCupom.

Você possui algum timer ou alguma outra trhead que poderia estar verificando o estado atual do ECF?

Oi Elton,

Faltou a função;


function TFRM_Caixa.f_VerificaDataImpressora: Boolean;

var

  vls_horaI, vls_horaF, vls_Hora, vls_Tolerancia: string;

begin

  Result := True;

  vls_horaI := FormatDateTime('hh:mm:ss', now);

  vls_horaF := FormatDateTime('hh:mm:ss', DM.ACBrECF.DataHora);

  vgs_Data := FormatDateTime('ddmmyy', DM.ACBrECF.DataHora);

  if vls_horaI > vls_horaF then

    vls_Hora := DifHora(vls_horaF, vls_horaI)

  else

    vls_Hora := DifHora(vls_horaI, vls_horaF);

  if DM.CDS_Conf_PDVUF_PDV.AsString = 'SC' then

    vls_Tolerancia := '00:14:59'

  else

    vls_Tolerancia := '00:59:59';


  if vls_Hora > vls_Tolerancia then

  begin

    Application.MessageBox(PChar('Hora do micro com  difereça maior que ' + vls_Tolerancia + ' da impressora fiscal,' + #13#10 +

      'O sistema não poderá emitir cupons!'), Pchar(vgs_Mensagem_Atencao), MB_OK + MB_ICONINFORMATION);

    Result := False;

  end;

  if FormatDateTime('ddmmyy', now) <> vgs_Data then

  begin

    Application.MessageBox('Devido a Data do Micro estar diferente da Data da Impressora Fiscal,' + #13#10 +

      'O sistema não poderá emitir cupons!', Pchar(vgs_Mensagem_Atencao), MB_OK + MB_ICONINFORMATION);

    Result := False;

  end;

end;

Grato.

Wandarlei Michelon

  • Fundadores
Postado

Não há problema algum com chamada a métodos na sequencia ou de forma procedural...

O problema ocorre quando você chama algum método dentro de algum Evento... que é o que parece estar ocorrendo pelo Log...

Veja todos os lugares onde você lê o estado do ECF.. algum deles deve ser um evento, que é chamado mesmo quando o ECF está ocupado

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.

  • Consultores
Postado

Como o Daniel mencionou, note que não há nenhuma chamada ao ESTADO do ECF nessa sua função que mencionou que faltou. Muito provavelmente é um evento. Talvez o onDepoisAbreCupomFiscal.

[]'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

Como o Daniel mencionou, note que não há nenhuma chamada ao ESTADO do ECF nessa sua função que mencionou que faltou. Muito provavelmente é um evento. Talvez o onDepoisAbreCupomFiscal.

Bom dia Elton e Daniel,

De fato encontrei uma chamada ao ESTADO do ECF sem necessidade, desabilitei ela.

Vou atualizar no cliente e verificar o comportamento.

Muito obrigado pela ajuda.

Aproveitando, tenho tido problemas com impressoras Bematech e cabo USB.

Não consigo fazer funcionar, quando um cliente aparece com uma solicito a compra de uma placa PCI de seriais ou um conversor de USB para Serial.

No caso utilizando as impressoras Daruma, Epson ou Dataregis (que tenho clientes com essas marcas e com cabo USB), não tive problema algum simplesmente seleciono a USB que foi instalada e mudo a velocidade da porta serial com o comando

ACBrECF.Device.Baud := 115200;

mas com a Bematech não consigo fazer funcionar.

Tem algum detalhe diferente a ser feito?

Grato

Wandarlei Michelon

  • Fundadores
Postado

Acho que o suporte da Bematech é mais indicado para essa tarefa... aparentemente falta instalar algum driver para fazer a USB emular uma serial.

Estou terminando uma reforma no ACBr que permitirá usar a DLL do fabricante para acessar o ECF. Na Epson já está funcionando, e usando a USB diretamente (sem emular uma Porta COM) tive uma melhora de quase 50%:

Porém a implementação dessa funcionalidade depende da DLL do fabricante possuir uma funçõe de "baixo nível" para apenas enviar o pacote de dados já montado no protocolo e aguardar a resposta. Estou conversando com alguns fabricantes sobre isso...

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.

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

The popup will be closed in 10 segundos...