Ir para conteúdo
  • Cadastre-se

dev botao

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

Recommended Posts

  • Membros Pro
Postado

Olá...

 

Consegui uma Daruma FS800i (Protocolo 09/09) para testes.

 

Durante estes testes está ocorrendo erro na procedure TACBrECFEscECF.EfetuaPagamento. Ocorre no ECFTeste também.

 

 

O problema ocorre nesta linha:

try
    NumPagtos := RespostasComando.FieldByName('NumPagtos').AsInteger;
  except
    NumPagtos := 0;
  end ;
 
Alguem tem o manual dos comandos para comunicação direta ?
 
  • Moderadores
Postado

Por favor, para que possamos ajudá-lo ao menos a mensagem de erro deve ser postada.

Se possível o log do ACBrECF também.

 

Tenho aqui uma ECF 09/09 da Daruma para testes, tendo as informações eu já olho o que está havendo.

 

Você está com seu ACBr atualizado, pois aqui está funcionando normalmente.

Equipe ACBr

Régys Borges da Silveira

http://www.regys.com.br

certificacao delphicertificacao delphi
  • Membros Pro
Postado (editado)

Abaixo o log do ACBr, porém o erro não aparece aí.

            Resposta: SEQ:53 CMD:26 EXT:0 CAT:0 RET:[SOH][NUL][NUL]@ TBR:3 BRS:"10|" CHK:112
   16:36:27:181 RX <- [SOH]5[26][NUL][NUL][SOH][NUL][NUL]@[ETX][NUL]10|p
-- 16:36:58:472 EfetuaPagamento( 1 , 11 , , 0, 0 )
                TX -> [SOH]6[4][NUL][FF][NUL]1|1100|1||7|[CR]
                RX <- [ACK]
         Status TX -> [ENQ][NUL]
                RX <- [WAK][16][SOH][NUL][NUL][NUL]
         Status TX -> [ENQ][NUL]
                RX <- [WAK][16][SOH][NUL][NUL][NUL]
         Status TX -> [ENQ][NUL]
            Resposta: SEQ:54 CMD:4 EXT:0 CAT:0 RET:[SOH][NUL][NUL]@ TBR:1 BRS:"|" CHK:248
   16:36:58:646 RX <- [SOH]6[4][NUL][NUL][SOH][NUL][NUL]@[SOH][NUL]|[248]


O erro que ocorre é "list index out of bounds[0]", no código abaixo :

 

procedure TACBrECFEscECF.EfetuaPagamento(CodFormaPagto : String ;
   Valor : Double ; Observacao : AnsiString ; ImprimeVinculado : Boolean ;
   CodMeioPagamento : Integer) ;
Var
  NumPagtos : Integer;
  TotPag : Double;
begin
  if (CodMeioPagamento <= 0) or (CodMeioPagamento > 7) then
    CodMeioPagamento := 7;
  { 1-Dinheiro, 2-Cheque, 3-Cartão de Crédito, 4-Cartão de Débito,
     5-Cartão Refeição/Alimentação, 6-Vale Refeição/Alimentação (em papel),
     7-Outros }


  with EscECFComando do
  begin
     CMD := 4 ;
     AddParamString( CodFormaPagto );
     AddParamDouble( Valor );
     AddParamInteger( 1 );  // Parcelas ??
     AddParamString( LeftStr(Observacao, 84) );
     AddParamInteger( CodMeioPagamento );
  end ;


  EnviaComando ;


  try
    NumPagtos := RespostasComando.FieldByName('NumPagtos').AsInteger;
  except
    NumPagtos := 0;
  end ;


  try
    TotPag := RespostasComando.FieldByName('TotalPago').AsFloat;
  except
    TotPag := 0;
  end ;


  Inc( NumPagtos ) ;
  RespostasComando.AddField( 'NumPagtos', IntToStr(NumPagtos) );
  RespostasComando.AddField( 'Pagto'+IntToStr(NumPagtos),
     CodFormaPagto+'|'+FloatToStr(Valor)+'|'+IntToStr(CodMeioPagamento) );
  RespostasComando.AddField( 'TotalAPagar', EscECFResposta.Params[0] );
  RespostasComando.AddField( 'TotalPago',  FloatToIntStr(Valor + TotPag) );


  SalvaRespostasMemoria(False);
end;
Observe esta linha no código acima: RespostasComando.AddField( 'TotalAPagar', EscECFResposta.Params[0] );

 

O estranho é que parece que sempre que o valor que deve retornar seja 0 (zero), no caso acima o campo "TotalAPagar", parece dar este problema.

 

Quando o ECF chegou, fui testar direto no sistema e não conseguia fazer funcionar por que o valor do Totalizador Geral estava zerado no ECF (para o cálculo do GT) e dava exatamente o mesmo problema.

Tive que fazer um cupom primeiro pelo ECFTeste para que  o ECF não tivesse mais o Totalizador Geral zerado e este erro parasse de acontecer.

 

 
Editado por ivan
  • Membros Pro
Postado (editado)

Vamos lá! 

 

1) Conectei ao ECF (através do ECFTeste.exe) com cupom pendente e redução Z pendente.

2) Cancelei o cupom

3) Emiti a redução Z (ocorreu list index out of bounds[1])

4) Fiz um cupom simples, com 3 ítens

5) subtotalizei o cupom.

6) Cliquei em Efetuar pagamento. Ocorreu a mensagem "Impressora não está em Estado de Pagamento. Primeiro use Subtotaliza Cupom". Mas já havia feito a subtotalização.

7) Fechei com pagamento em dinheiro (ocorreu list index out of bounds[0]). 

 

Abaixo, segue a sequência de comandos que efetuei no ECFTeste

Ativar
#1#4#353#0#5#1#0#0#0#0#0#164
- + - + - + - + - + - + - + - + - + - + - + -
CancelaCupom
#1#10#26#0#0#5#0#0b#7#02|9200|#8225
- + - + - + - + - + - + - + - + - + - + - + -
REDUÇÃO Z PENDENTE
List index out of bounds (1) 
#1#25#26#0#0#1#0#0#0#5#01|28|#204
- + - + - + - + - + - + - + - + - + - + - + -
AbreCupom
#1#28#26#0#0#1#0#0@#5#01|29|#16
- + - + - + - + - + - + - + - + - + - + - + -
Vende Item: Cod:111222333 DescTESTE DE PRODUTO Aliq:NN Qtd:1 Preço:1 Desc:0 Un:UN Desc:%
- + - + - + - + - + - + - + - + - + - + - + -
Vende Item: Cod:111222333 DescTESTE DE PRODUTO Aliq:NN Qtd:1 Preço:1 Desc:0 Un:UN Desc:%
- + - + - + - + - + - + - + - + - + - + - + -
Vende Item: Cod:111222333 DescTESTE DE PRODUTO Aliq:NN Qtd:1 Preço:1 Desc:0 Un:UN Desc:%
- + - + - + - + - + - + - + - + - + - + - + -
Subtotaliza Cupom: 0
- + - + - + - + - + - + - + - + - + - + - + -
List index out of bounds (0)
#1,#4#0#0#1#0#0@#1#0|#238
- + - + - + - + - + - + - + - + - + - + - + -
Fecha Cupom: 
Componentes ACBr
http://acbr.sourceforge.net
#1-#5#0#0#1#0#0@#22#029|08062015090223|300|#193
- + - + - + - + - + - + - + - + - + - + - + -

Log do acbr em anexo !

 

 

 

acbrlog_forum.txt

acbrlog_forum.txt

Editado por ivan
  • Membros Pro
Postado (editado)

Ok Régys !    Muito obrigado.   

 

Aqui também tive vários outros problemas com ela. Um deles é que depois de conectar uma vez ao aplicativo, seja o ECFTeste ou o nosso PAF, depois de fechar o aplicativo e abrir novamente não conecta mais. Tenho sempre que desligar o ECF e ligar novamente para conseguir conectar e isto nem sempre funciona. A mensagem é que não está em linha.

 

No meu computador não conecta mais. Sempre ocorre a mensagem "Communication error 31" . Instalei em outro computador e conectou normalmente. Já removi os drivers, já instalei em outra porta USB, mas não consegui mais fazer funcionar.  

 

Estarei com ela aqui até na sexta-feira. Prosseguirei com alguns outros testes hoje a tarde e postarei aqui caso encontrar algum outro problema.

Editado por ivan
  • Membros Pro
Postado

Conversando com o pessoal do suporte da Daruma a respeito dos problemas de comunicação após fechar o sistema, me informaram que pode ser que ficou ainda algo em memória ou preso na porta de comunicação.  

 

Quanto ao driver da Daruma, estou utilizando a última versão.  Usando o aplicativo deles não ocorre este problema. Sei que utilizam a DLL, mas o que estou querendo dizer é que talvez não desconectou realmente. Algo ficou "preso"

 

No ECFTEste, eu fiz um teste, colocando o comando ACBrECF1.Device.Serial.Purge antes do ACBrECF1.Desativar ; Não deu resultado.   

  • Moderadores
Postado

Esse problema também tenho aqui, e conversei com o pessoal da Daruma sobre isso, eles me passaram aquilo que comentei anteriormente, existe um problema e eles estão verificando onde é, firmware ou driver.

 

Aqui se eu desconecto o cabo, espero um pouco e conecto novamente volta a funcionar, mas isso funciona um tempo depois só reiniciando, é algo na impressora ou driver mesmo.

Equipe ACBr

Régys Borges da Silveira

http://www.regys.com.br

certificacao delphicertificacao delphi
  • Moderadores
Postado

Hoje falei com o pessoal da Daruma é me passaram um novo driver, com este driver o problema de travamento da porta não acontece mais, testei com o ACBr e o aplicativo de testes da Daruma é tudo está OK.

 

Segue o link para baixar o driver: http://www.regys.com.br/arquivos/Driver_Serie_800.exe

 

Para instalar, primeiro remova o driver antigo abrindo o gerenciador de dispositivos, clicando com o botão direito na porta COM virtual e clicando em desinstalar, na tela que segue marque a opção de remover o driver instalado, após isso desconecte a impressora, instale o novo driver e quando pedido reconecte.

Equipe ACBr

Régys Borges da Silveira

http://www.regys.com.br

certificacao delphicertificacao delphi
  • Membros Pro
Postado

Ok Régys !

 

O Luís Carlos da Daruma entrou em contato comigo agora pela manhã.

 

Ele me passou o novo driver também.

 

Para que o Windows instalasse o driver correto, tive que fazer assim:

1) Remover o driver, marcando a opção de remover o driver instalado (assim como você havia mencionado).

2) Retirar o cabo de rede (se não fizer isto o Windows instalava o driver anterior do repositório)

3) Instalar o driver como Administrador e desta forma reconhecia o signatário do driver como a Daruma, senão, sempre ficava como Microsoft.

 

Atualizei os fontes do ACBr e recompilei o ECFTeste, porém o resultado aqui para mim ainda é o mesmo: sempre que desconecta ou fecha o programa, não conecta mais. A mensagem é que não está em linha.

  • Moderadores
Postado

Ivan, não sei lhe dizer o que acontece pois aqui funciona perfeitamente e não precisei fazer tudo isso, somente exclui o antigo e instalei o novo.

Minha impressora de testes está conectada via porta USB diretamente ao computador, ambiente é windows 8.1 com Delphi 7, 2010 e XE8.

Somente recompilei meu ECFTeste, configurei a porta para 115200 de velocidade e controle de fluxo nenhum, o resto deixei o padrão, está tudo rodando normalmente.

Somente o erro de "index out of bound" na redução Z persiste, mas já estou analisando o que está havendo, pode ser um retorno de forma não esperada precisando de tratamento.

Equipe ACBr

Régys Borges da Silveira

http://www.regys.com.br

certificacao delphicertificacao delphi
  • Membros Pro
Postado (editado)

Oi Régys.  

 

Atualizei novamente o ACBr, conforme a Thais da Daruma pediu (mas não havia atualização para o ACBrECF), e recompilei o ECFTeste.   

Desliguei o computador, desliguei o ECF, desconectei o cabo USB e fiz tudo novamente:

 

Abri o ECFTeste, fiz dois cupons (realmente, a mensagem de index out of bounds ainda aparece).

Desconectei e tentei conectar novamente.   A mensagem de que não está em linha continua aparecendo.

 

Alguma outra ideia do que eu poderia fazer ?  Manda o seu ECFTeste compilado  pra mim ?

 

Em anexo, segue o log.

log_acbr_ecsecf.txt

log_acbr_ecsecf.txt

Editado por ivan
  • Moderadores
Postado

Veja no seu log, o controle de fluxo está "HANDSHAKE=DTR/DSR" tem que ser nenhum

 

--------------------------------------------------------------------------------
ATIVAR - 15/06/15 13:55:45:151 - Modelo: EscECF - Porta: COM3 - TimeOut: 3
         Device: BAUD=115200 DATA=8 PARITY=N STOP=1 HANDSHAKE=DTR/DSR MAXBANDWIDTH=0
--------------------------------------------------------------------------------
 
O correto seria algo assim:
--------------------------------------------------------------------------------
ATIVAR - 15/06/15 10:21:39:120 - Modelo: EscECF - Porta: COM5 - TimeOut: 3
         Device: BAUD=115200 DATA=8 PARITY=N STOP=1 HANDSHAKE= MAXBANDWIDTH=0
--------------------------------------------------------------------------------

Equipe ACBr

Régys Borges da Silveira

http://www.regys.com.br

certificacao delphicertificacao delphi
  • Membros Pro
Postado

Régys... O problema de comunicação está resolvido. Era isto mesmo.

 

Quando você falou sobre o controle de fluxo desligado eu verifiquei no driver do Windows, mas é claro que era no ACBr.... estava focado em outra coisa e acabei deixando passar. Me perdoe.

 

Agora só falta o problema dos "list index out of bounds".    De qualquer forma, lhe agradeço muito pelo empenho e atenção.

  • Curtir 1
  • Membros Pro
Postado (editado)

Fiz alguns testes através o ECFTeste.    Logs em anexo

 

Teste com a redução Z.  Ocorreu somente um erro de não estar respondendo, mas a princípio é por que trancou o papel. 

Vou testar depois novamente e informarei o resultado.

 

Testes com cupom fiscal:

Ocorreu ainda o list index out of bounds(0) ao efetuar o pagamento.

 

Testes com leitura X

Erro CHK Resposta. Calculado:53 Recebido:0
#17#16#2#0#0#0#17#16#2#0#0#0
- + - + - + - + - + - + - + - + - + - + - + -
 
LerTroco
List index out of bounds(1)

acbrlog_18062015_cupom.txt

acbrlog_18062015_leituraX.txt

acbrlog_18062015_cupom.txt

acbrlog_18062015_leituraX.txt

Editado por ivan
  • Membros Pro
Postado (editado)

Atualizei tudo novamente.  

Fiz o primeiro teste no ECFTeste, verificando a emissão de um cupom fiscal. 

Ocorre List Index out of bounds(0) no método EfetuaPagamento.   No nosso PAF, cancela o cupom após tentar o EfetuaPagamento.

O erro não aparece no log. 

Abaixo, os passos que fiz no ECFTeste para emissão de cupom fiscal

Ativar
#1#5#26#0#0#1#0#0@#20#026062015|1|67|16455|#157
AbreCupom
#1#10#26#0#0#1#0#0@#5#01|69|#2
Vende Item: Cod:111222333 DescTESTE DE PRODUTO Aliq:NN Qtd:1 Preço:1 Desc:0 Un:UN Desc:%
Vende Item: Cod:111222333 DescTESTE DE PRODUTO Aliq:NN Qtd:1 Preço:1 Desc:0 Un:UN Desc:%
Vende Item: Cod:111222333 DescTESTE DE PRODUTO Aliq:NN Qtd:1 Preço:1 Desc:0 Un:UN Desc:%
Subtotaliza Cupom: 0
List index out of bounds (0)
#1#21#4#0#0#1#0#0@#1#0|#215
Fecha Cupom: 
Componentes ACBr
http://acbr.sourceforge.net
#1#22#5#0#0#1#0#0@#22#069|26062015085835|600|#190
Desativar

Leitura X + Redução Z + Sangria + Suprimento

Ocorre erro CHK Resposta. Calculado:55 Recebido:1. As vezes Calculado = 52, 53
 

acbrlog_26062015.txt

Editado por ivan
  • Este tópico foi criado há 3430 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...