Ir para conteúdo
  • Cadastre-se

dev botao

Novo componente ACBrMTER - MicroTerminais TCP/IP


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

Recommended Posts

4 horas atrás, EliasCesar disse:

Olá, 

Efetuei testes com o aplicativo de exemplo do ACBrMTer e aqui funcionou normalmente. Em seu ambiente está ocorrendo algum erro?

Referente à comunicação com balança, será necessário enviar um comando de leitura do peso pela função "EnviarParaSerial". Após isso, os dados retornados pela balança serão enviados do Micro Terminal para a aplicação normalmente.

Futuramente pensamos em integrar o ACBrBal ao ACBrMTer, sendo possível comunicação com qualquer tipo de balança sem a necessidade de interpretar a resposta da balança. Porém essa alteração não foi possível até o momento.

Elias, 

Esse comando de leitura que eu vou enviar pela função "EnviarParaSerial", como eu faria esse comando? Existe algo semelhante no ACBrBal?

Estava pensando aqui ... Eu posso usar o AcbrBal e pegar o peso da balança e depois eu enviar para o microterminal? 

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

  • Fundadores

não dá pois a balança não está ligada no PC, e sim no microterminal...

ainda não chegamos a conclusão de como vamos integrar ACBrMTER e ACBrBAL...

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

  • Consultores

Geralmente o caractere para ler peso é o ENQ (#05). Dependerá do protocolo de cada balança.

Só seria possível se a balança estivesse ligada direto no PC. Porém a balança e o Micro Terminal funcionariam de forma separada.
Sua aplicação ficaria responsável por ler o peso (usando o ACBrBAL) e depois exibir esse peso no Micro Terminal (usando o ACBrMTer).

Consultor SAC ACBr

Elias César Vieira
Projeto ACBr - A maior comunidade Open Source de Automação Comercial do Brasil
Assine o
SAC

 
Link para o comentário
Compartilhar em outros sites

13 minutos atrás, Daniel Simoes disse:

não dá pois a balança não está ligada no PC, e sim no microterminal...

ainda não chegamos a conclusão de como vamos integrar ACBrMTER e ACBrBAL...

Verdade! Falei bobeira eu tinha esquece desse detalhe que a comunicação é da balança direto com o microterminal. 

Link para o comentário
Compartilhar em outros sites

1 hora atrás, EliasCesar disse:

Geralmente o caractere para ler peso é o ENQ (#05). Dependerá do protocolo de cada balança.

Só seria possível se a balança estivesse ligada direto no PC. Porém a balança e o Micro Terminal funcionariam de forma separada.
Sua aplicação ficaria responsável por ler o peso (usando o ACBrBAL) e depois exibir esse peso no Micro Terminal (usando o ACBrMTer).

Elias, eu estou aqui com uma prix3 conectado ao meu micro terminal no manual dela ele me passa esse comando. 
ENQ = Caracter ASCII (05H) enviado pelo dispositivo externo. 

Coloquei um código de testes assim.

var
  I: Integer;
begin
  VerificaSelecionado;

  for I := 0 to clbConectados.Count - 1 do
    if clbConectados.Checked[I] then
      ACBrMTer1.EnviarParaSerial(clbConectados.Items[I], '05H', 0);


 

Sem título.png

Link para o comentário
Compartilhar em outros sites

  • Consultores

Tente:

ACBrMTer1.EnviarParaSerial(clbConectados.Items, '#05', 0);

ou 

ACBrMTer1.EnviarParaSerial(clbConectados.Items, ENQ, 0);   
// ENQ é uma constante da ACBrConsts.pas... Equivale à '#05'

Consultor SAC ACBr

Elias César Vieira
Projeto ACBr - A maior comunidade Open Source de Automação Comercial do Brasil
Assine o
SAC

 
Link para o comentário
Compartilhar em outros sites

3 minutos atrás, EliasCesar disse:

Tente:

ACBrMTer1.EnviarParaSerial(clbConectados.Items, '#05', 0);

ou 

ACBrMTer1.EnviarParaSerial(clbConectados.Items, ENQ, 0);   
// ENQ é uma constante da ACBrConsts.pas... Equivale à '#05'

Elias, 

Tentei assim. 

ACBrMTer1.EnviarParaSerial(clbConectados.Items, ENQ, 0);

e assim


ACBrMTer1.EnviarParaSerial(clbConectados.Items, '#05', 0);

E não retornou nada. 

 

Link para o comentário
Compartilhar em outros sites

  • Consultores

Com a balança direto no PC está sendo possível ler o peso normalmente?

Verifique se as configurações da porta serial do seu Micro Terminal estão iguais às da balança(Velocidade, Baud rate, parity, etc.).

Consultor SAC ACBr

Elias César Vieira
Projeto ACBr - A maior comunidade Open Source de Automação Comercial do Brasil
Assine o
SAC

 
Link para o comentário
Compartilhar em outros sites

1 hora atrás, EliasCesar disse:

Com a balança direto no PC está sendo possível ler o peso normalmente?

Verifique se as configurações da porta serial do seu Micro Terminal estão iguais às da balança(Velocidade, Baud rate, parity, etc.).

Elias, o micro terminal estava com uma velocidade diferente da balança por isso não funcionava! 

Agora eu só vou ver como eu trato o retorno do peso porque está vindo com os "zeros" à frente e está dando erro.
ex: 00240

Link para o comentário
Compartilhar em outros sites

  • 4 semanas depois ...
  • Consultores

Permite sim, 

O tipo do leitor dependerá do Micro Terminal.
Eu fiz testes com leitor serial, mas teoricamente qualquer tipo de leitor(que o Terminal suporte) funcionará.
(Lembrando que o se o "Eco" estiver habilitado, a leitura também será enviada para o Micro Terminal. Sendo preciso desabilitar a opção caso necessite).

Consultor SAC ACBr

Elias César Vieira
Projeto ACBr - A maior comunidade Open Source de Automação Comercial do Brasil
Assine o
SAC

 
Link para o comentário
Compartilhar em outros sites

16 minutos atrás, EliasCesar disse:

Permite sim, 

O tipo do leitor dependerá do Micro Terminal.
Eu fiz testes com leitor serial, mas teoricamente qualquer tipo de leitor(que o Terminal suporte) funcionará.
(Lembrando que o se o "Eco" estiver habilitado, a leitura também será enviada para o Micro Terminal. Sendo preciso desabilitar a opção caso necessite).

Obrigado por responder! 

Uma coisa que eu vou fazer hoje é o inicia vendas eu copiei o exemplo do acbr mas o meu cliente gostaria que o micro terminal ao conectar ele já entre com o inicia vendas somente naquele terminal, eu nunca vi isso mas o cliente usa o micro terminal e desliga ele! Vai entender ... 

Link para o comentário
Compartilhar em outros sites

Em 14/10/2016 at 11:01, EliasCesar disse:

Permite sim, 

O tipo do leitor dependerá do Micro Terminal.
Eu fiz testes com leitor serial, mas teoricamente qualquer tipo de leitor(que o Terminal suporte) funcionará.
(Lembrando que o se o "Eco" estiver habilitado, a leitura também será enviada para o Micro Terminal. Sendo preciso desabilitar a opção caso necessite).

Elias, 

Esse "eco" que você se refere é o echo mode? Eu estou tentando passar um Powerade que é do código de barras 7894900500004 e ele só captura até o 789490050.

Link para o comentário
Compartilhar em outros sites

  • Consultores

Isso, me referi ao EchoMode sim, para que a leitura não seja enviada ao Micro Terminal (caso não seja necessário).

Qual o tipo de leitor está sendo utilizado?
Se testar ele direto no PC a leitura sai correta?

Consultor SAC ACBr

Elias César Vieira
Projeto ACBr - A maior comunidade Open Source de Automação Comercial do Brasil
Assine o
SAC

 
Link para o comentário
Compartilhar em outros sites

20 minutos atrás, EliasCesar disse:

Isso, me referi ao EchoMode sim, para que a leitura não seja enviada ao Micro Terminal (caso não seja necessário).

Qual o tipo de leitor está sendo utilizado?
Se testar ele direto no PC a leitura sai correta?

Eu vi que a mudança do echoMode só fazia isso mesmo por isso eu perguntei. 

Microterminal é o willtech W600U com um leitor de código de barras bematech BR-400, tudo pela porta USB e sim no bloco de notas captura o valor correto. 

Link para o comentário
Compartilhar em outros sites

  • Fundadores

Observe no final do Log que o Terminal quebrou o código em 2 retornos... 

O ACBr nao tem controle sobre isso pois parece ser uma característica do Terminal...

Isso pode ocorrer, pois o terminal trata o leitor como se fosse entrada de teclado...

Talvez você deva programar um sufixo no terminal para detectar o fim da leitura 

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

Em 22/10/2016 at 11:15, Daniel Simoes disse:

Observe no final do Log que o Terminal quebrou o código em 2 retornos... 

O ACBr nao tem controle sobre isso pois parece ser uma característica do Terminal...

Isso pode ocorrer, pois o terminal trata o leitor como se fosse entrada de teclado...

Talvez você deva programar um sufixo no terminal para detectar o fim da leitura 

Certo! Vou começar a fazer esse desenvolvimento na semana que vem! Obrigado pelo suporte. 

Daniel, estou tentando reescrever a função de inicia vendas para que quando um microterminal for ligado na rede somente ele já entrar em fluxo de vendas. 

 

procedure TfrmMicroTerminal.ACBrMTer1Conecta(const IP: AnsiString);
begin
  mOutput.Lines.Add('Conectou IP: ' + IP);
  ACBrMTer1.LimparDisplay(IP);
  ACBrMTer1.EnviarTexto(IP, 'Seja bem vindo');

  AtualizarConexoes;

  CarregarTerminais;
  Splitter1.Visible     := (clbConectados.Visible);

  memTerminais.Locate('IP_TERMINAL', ip, []);
  memTerminais.Edit;
  memTerminaisSTATUS.AsInteger := 1;
  memTerminais.Post;

  AlterarEstadoTerminal(IP, 1);
end;

No caso quando um novo microterminal entra na rede o que já estava fazendo vendas trava. 

Link para o comentário
Compartilhar em outros sites

Eu vi que o que está me impedindo de deixar o "inicia vendas" automatico é o código do "CarregarTerminais".

 

var
  I: Integer;
begin
  with ACBrMTer1.TCPServer.ThreadList.LockList do
  try
    for I := 0 to Count - 1 do
      with TACBrTCPServerThread(Items) do
        if Active then
        begin
          memTerminais.Insert;
          memTerminais.FieldByName('IP_TERMINAL').AsString := TCPBlockSocket.GetRemoteSinIP;
          memTerminais.FieldByName('COMANDA').AsString     := '';
          memTerminais.FieldByName('RESPOSTA').AsString    := '';
          memTerminais.FieldByName('STATUS').AsInteger     :=  0;
          memTerminais.Post;
        end;
  finally
    ACBrMTer1.TCPServer.ThreadList.UnlockList;
  end;

  Application.ProcessMessages;

O looping parece correr em todos os terminais e isso impedindo que eles fiquem automáticos. 

Link para o comentário
Compartilhar em outros sites

  • Moderadores
2 horas atrás, nicolasbraz disse:

Galera, 

Atualizei o ACBR para a revisão 12547. 

E o ACBRMTER não compila mais! Dá erro no  

fTCPServer.OnDesConecta  := DoDesconecta;

[DCC Error] ACBrMTer.pas(768): E2010 Incompatible types: 'string' and 'AnsiString'

 

 

Boa tarde

acho que é necessário refazer o evento!

recorta o código dele, salva que vai remover e dai cria novamente colando o código

Consultor SAC ACBr Juliomar Marchetti
 

Projeto ACBr

skype: juliomar
telegram: juliomar
e-mail: [email protected]
http://www.juliomarmarchetti.com.br
MVP_NewLogo_100x100_Black-02.png
 

 

Link para o comentário
Compartilhar em outros sites

  • 3 semanas depois ...
  • Consultores

É possível sim, 

Seria preciso apenas alterar o "ACBrMTerConecta", colocando no lugar do comando "Seja Bem Vindo", uma função que Inicia o fluxo.
O código ficaria parecido com "IniciarFluxoVendas", porém sem o laço para varrer todos os terminais.

Consultor SAC ACBr

Elias César Vieira
Projeto ACBr - A maior comunidade Open Source de Automação Comercial do Brasil
Assine o
SAC

 
Link para o comentário
Compartilhar em outros sites

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