Programação para Balança

Delphi

17/12/2003

Oi pessoal! pretendo criar programas para balanças eletronicas, gostaria de onde encontrar material para estudo na net? ou indicação de livros.

Grato,

Adriano


Xadriano

Xadriano

Curtidas 0

Melhor post

Aroldo Zanela

Aroldo Zanela

18/12/2003

Colega,

Para ser franco eu achei muito rápido e de excelente qualidade o material disponibilizado pela Filizola. Mas eu também ficarei muito grato se puder disponibilizar o material proposta aqui no fórum para que todos os interessados possam tirar proveito.


GOSTEI 2

Mais Respostas

Edison_br

Edison_br

17/12/2003

Se vc puder ser mais especifico? O vc quer fazer com a balança?


GOSTEI 1
Turbo Drive

Turbo Drive

17/12/2003

Olha so primeirmente vc deve ser mais claro como se refere nosso colega edison_br.
vc ira prescisar de um componente serial se for trabalhar coletando informação da balança. Ai vc tem de ter o componente ASync32 que vc encontra no http://www.veloso.kit.net/download.html. depois dai e so aprender como trabalha com ele e saber claro da configurações da balança que vc vai trabalhar.

Se for das que emitem codigo de barras vc nao ira prescisar de nada somente saber decifar como esta cadastrado na balança e fazer a rotina para o seu sistema.

Se for balanças industriais indico que vc procure o fabricante pois ele lhe dara maiores informa~ções como desenvolver a comunição.


nao tem muito segredo não


Falow MSN anibaltec@veloxmail.com.br


GOSTEI 1
Aroldo Zanela

Aroldo Zanela

17/12/2003

Colega,

Qual marca e modelo da balança? Tenho uma rotina para Filizola BP15 que fiz recentemente. No site do fabricante deve ter os exemplos e manuais.


GOSTEI 1
Aroldo Zanela

Aroldo Zanela

17/12/2003

Colega,

Declarando a DLL:

function ConfiguraBalanca(Balanca: Integer; Aplicativo: THandle): Boolean;
             stdcall; external ´PcScale.dll´;

{Declara a função InicializaLeitura existente na DLL "PcScale.dll"}
function InicializaLeitura(Balanca: Integer): Boolean;
             stdcall; external ´PcScale.dll´;

{Declara a função ObtemInformacao existente na DLL "PcScale.dll"}
function ObtemInformacao(Balanca: Integer; Campo: Integer): double;
             stdcall; external ´PcScale.dll´;

{Declara a função FinalizaLeitura existente na DLL "PcScale.dll"}
function FinalizaLeitura(Balanca: Integer) : Boolean;
             stdcall; external ´PcScale.dll´;

{Declara a função ExibeMsgErro existente na DLL "PcScale.dll"}
function EnviaPrecoCS(Balanca : integer; Preco : double) : Boolean;
             stdcall; external ´PcScale.dll´;

{Declara a função FinalizaLeitura existente na DLL "PcScale.dll"}
function ObtemParametrosBalanca(Balanca: Integer; Modelo: PInteger;
                             Porta: PInteger; BaudRate: PInteger
                             ): Boolean
             stdcall; external ´PcScale.dll´;

{Declara a função ObtemNomeBalanca existente na DLL "PcScale.dll"}
Procedure ObtemNomeBalanca(Modelo: Integer; Ret: PChar);
             stdcall; external ´PcScale.dll´;

{Declara a função ExibeMsgErro existente na DLL "PcScale.dll"}
Procedure ExibeMsgErro(Aplicativo : THandle);
             stdcall; external ´PcScale.dll´;


Evento OnTimer:

procedure TForm7.tmrBalancaTimer(Sender: TObject);
var Status: Integer;
Mensagem: String;
begin
  Status := StrToInt(FloatToStr(ObtemInformacao(0,0)));
  Case Status of
    0:  Mensagem := ´Falha comunicando-se com a balança.´;
    1:  Mensagem := ´Peso Oscilando.´;
    2:  Mensagem := ´Peso estável.´;
    3:  Mensagem := ´Sobrecarga de Peso ou Alivio de Plataforma.´;
    4:  Mensagem := ´Erro lendo licensa do Software.´;
  end;
  rxBalanca.Value:= ObtemInformacao(0,1)/1000;
  Totalizar;
  btnOk.Enabled:= Status=2;
  sbBalanca.SimpleText:= Mensagem;
end;



O código acima é disponibilizado gratuitamente pela Filizola, basta se cadastrar como desenvolvedor e baixar os arquivos. Está tudo detalhado e você não vai gastar mais que algumas horas para implementar na sua aplicação.


GOSTEI 1
Turbo Drive

Turbo Drive

17/12/2003

Bom dia

Prezado Zanela não temos a nescessidade de usar essa dll que a filizola nos fornece mesmo gratuito ficamos muito dependentes deles assim atrazando todo o nosso serviço então se vc deseja ter envio um exemplo que vai funcionar com todas as marcas de balaças do mercado seja ela

Filizola Toledo Urano entre outras bastando ser uma RS 232

Falow


GOSTEI 1
Xadriano

Xadriano

17/12/2003

Olá Turbo Drive!
Se você puder me enviar este exemplo ficarei muito grato.
E-mail: af-pereira@uol.com.br

Adriano


GOSTEI 0
Programalista

Programalista

17/12/2003

Olá Turbo Drive, adoraria se vc me enviasse tambem o exemplo para trabalhar com balanças, inclusive as toledos.
lourival@usimetal.com.br


Lourival Oliveira
Sete Lagoas - MG


GOSTEI 0
G!ov@nny_porto

G!ov@nny_porto

17/12/2003

me Envie os emails que te mandarei exemplos



Ate mais


GOSTEI 0
Programalista

Programalista

17/12/2003

Meu email é programalista@yahoo.com.br

Obrigado, desde já.


GOSTEI 0
Alexandremarcondes

Alexandremarcondes

17/12/2003

Meu email é programalista@yahoo.com.br Obrigado, desde já.


eu também gostaria de receber:

alexandremarcondes@gmx.net


GOSTEI 0
Cristiane.spl

Cristiane.spl

17/12/2003

meu e-mail é cristiane@splsistemas.com.br


desde já agradeço


GOSTEI 0
Turbo Drive

Turbo Drive

17/12/2003

Boa tarde a todos.

Como este parece ser um assunto que serve para todos nós, vou colocar o código que utilizo em minhas aplicações. Conforme foi dito antes, vcs precisam adquirir o Async32. O código abaixo diz que ao apertar o ´*´, o sistema pede a leitura da balança. Eis o que eu utilizo:
var
balanca : String;

if key = ´*´ then
begin
vaComm1.PortNum := 2; // COM2
if edit1.text = ´´ then
begin
if not vaComm1.active then
vaComm1.open;
balanca := #5;
if vaComm1.active then
vaComm1.WriteText(balanca);
end
end;
A variável balanca recebe 5 para iniciar a string e depois de ativo o componente joga o valor para ela.
Espero ter sido claro. Qualquer coisa, postem aqui ou me mandem um e-mail.


GOSTEI 0
Turbo Drive

Turbo Drive

17/12/2003

:lol: Pessoal esqueci de mencionar que este código é colocado no evento OnKeyPress.
Desculpem a falha. Precisando, tamos aí.


GOSTEI 0
Dpinho

Dpinho

17/12/2003

Alguem utilizou este código para balança Toledo PRIX III?
Preciso de um codigo para ler os dados desta balança, se alguem puder ajudar agradeço muito estou desesperado.


GOSTEI 0
Dpinho

Dpinho

17/12/2003

Alguem pode me ajudar?


GOSTEI 0
Vitor Alcantara

Vitor Alcantara

17/12/2003

var balanca : String; if key = ´*´ then begin vaComm1.PortNum := 2; // COM2 if edit1.text = ´´ then begin if not vaComm1.active then vaComm1.open; balanca := #5; if vaComm1.active then vaComm1.WriteText(balanca); end end;


Sei que esse Post já está bastante antigo, mais góstaria de perguntar se alguem sabe se as balanças da marca Gural ESE-15 trabalham do mesmo modo.

Obrigado desde já.
Aguardo retorno.


GOSTEI 0
Eselvati

Eselvati

17/12/2003

Pessoal,


A titulo de sugestão, a suite ACBr tem um componente que trabalha com as balancas filizola e toledo, deem uma procurada...vale a pena

http://www.forumweb.com.br/foruns/index.php?showforum=465



Ederson Selvati


GOSTEI 0
Vitor Alcantara

Vitor Alcantara

17/12/2003

O AcbrBal realmente é muito bom(funciona perfeitamente no XP) só que por enquanto ele só tem suporte para balanças toledo e filizola.
O meu programa ja tem o PDV com opções para essas duas balanças e funciona redondinho , só que um cliente está querendo interligar as balanças da marca Gural ESE-15 com o PDV e não estou conseguindo achar nada de significante especificamente para essa balança, e gostária se algum colega ja tiver feito alguma coisa para essa marca que se pusesse compartilhar alguma informação sobre a mesma.
Acredito que seja possivel a interligação da balança pois ela possui uma saida serial que se comunica com um impressor de etiquetas.

Segue o meu email para caso alguem tenha algum material e possa me enviar vitoraalcantara@bol.com.br.

Agradeço desde já
Atenciosamente Vitor Araújo Alcântara


GOSTEI 0
Guilherme Souza

Guilherme Souza

17/12/2003

Bom dia

Prezado Zanela não temos a nescessidade de usar essa dll que a filizola nos fornece mesmo gratuito ficamos muito dependentes deles assim atrazando todo o nosso serviço então se vc deseja ter envio um exemplo que vai funcionar com todas as marcas de balaças do mercado seja ela

Filizola Toledo Urano entre outras bastando ser uma RS 232

Falow




Eu também gostaria de receber este exemplo. Por favor envie para guilherme@info04informatica.com.br
Grato.
GOSTEI 0
Jefferson Rosa

Jefferson Rosa

17/12/2003

por favor , jeffersontpds@gmail.com
GOSTEI 0
Nelson Santos

Nelson Santos

17/12/2003

ganhe dinheiro com softwares 3D em Delphi 7
http://www.3dsistemas.com.br
GOSTEI 0
Evaldo

Evaldo

17/12/2003

Caros colegas, eu estava precisando fazer uma rotina para enviar produtos para Toledo, direto da minha aplicação sem usar o MGV5 (TXITENS.TXT)
alguém sabe dizer se é possível ?
GOSTEI 0
Rodrigo Marchiori

Rodrigo Marchiori

17/12/2003

Bom dia tudo bem? Por favor você pode enviar os exemplo e também a dll o meu e-mail, estou procurando mas não encontro e o site da Filizola está fora.

ra.marchiori@gmail.com

Obrigado!
GOSTEI 0
Potyscake 05105022459

Potyscake 05105022459

17/12/2003

opa to precisando tbm se poder me envia blz
naldofeat1212@gmail.com
GOSTEI 0
Potyscake 05105022459

Potyscake 05105022459

17/12/2003

opa to precisando tbm se poder me envia blz
naldofeat1212@gmail.com
GOSTEI 0
Lourival Oliveira

Lourival Oliveira

17/12/2003

Bom dia

Prezado Zanela não temos a nescessidade de usar essa dll que a filizola nos fornece mesmo gratuito ficamos muito dependentes deles assim atrazando todo o nosso serviço então se vc deseja ter envio um exemplo que vai funcionar com todas as marcas de balaças do mercado seja ela

Filizola Toledo Urano entre outras bastando ser uma RS 232

Falow




Olá Tubro Drive, pode me enviar tambem este exemplo: lourival.ap@gmail.com
GOSTEI 0
Victor Boechat

Victor Boechat

17/12/2003

Respondendo a postagem do colega de 2006, que pedia ajuda de como fazer uma integração com uma balança Prix III, mesmo fazendo muito tempo, alguém pode necessitar dessa informação. Segue abaixo uma Unit que criei a partir de um exemplo que retirei da internet.

unit UToledo; 

interface 

uses 
  Dialogs, SysUtils, Classes, Controls; 

  function AbrePorta(const Porta, BaudRate, DataBits, Paridade: Integer): Integer; StdCall; External 'P05.DLL'; 
  function PegaPeso(const OpcaoEscrita: Integer; Peso, Local: Pchar): Integer; StdCall; external 'P05.DLL'; 
  function FechaPorta: Integer; StdCall; External 'P05.dll'; 

type 
  TPorta = (prCOM1, prCOM2, prCOM3, prCOM4, prCOM5, prCOM6, prCOM7, prCOM8, prCOM9);
  TBaudRate = (br2400, br4800, br9600); 
  TDataBits = (db7Bits, db8Bits); 
  TParidade = (pdNenhuma, pdImpar, pdPar, pdEspaco); 

  TToledo = class(TComponent) 
  protected 
    function GetWeight: Real; 

  private 
    FPorta: TPorta; 
    FBaudRate: TBaudRate; 
    FDataBits: TDataBits; 
    FParidade: TParidade; 
    procedure SetPorta(const Value: TPorta); 
    procedure SetBaudRate(const Value: TBaudRate); 
    procedure SetDataBits(const Value: TDataBits); 
    procedure SetParidade(const Value: TParidade);
    function AbrirPorta: Boolean; overload;
    function AbrirPorta(FPorta:TPorta): Boolean; overload;
  public
    function PegarPeso: Real;
  published
    property Porta: TPorta read FPorta write SetPorta; 
    property DataBits: TDataBits read FDataBits write SetDataBits; 
    property Paridade: TParidade read FParidade write SetParidade; 
    property BaudRate: TBaudRate read FBaudRate write SetBaudRate; 
  end; 

procedure Register; 

implementation 

procedure Register; 
begin 
  RegisterComponents('BoechatSoft', [TToledo]); 
end; 

{ TToledo } 

function TToledo.AbrirPorta: Boolean;
begin
   AbrirPorta(prCOM1);
end;

function TToledo.AbrirPorta(FPorta:TPorta): Boolean;
var
  iPorta: Byte;
  iBaudRate: Byte;
  iDataBits: Byte;
  iParidade: Byte;
begin
   case FPorta of
      prCOM1 : iPorta := 1;
      prCOM2 : iPorta := 2;
      prCOM3 : iPorta := 3;
      prCOM4 : iPorta := 4;
      prCOM5 : iPorta := 5;
      prCOM6 : iPorta := 6;
      prCOM7 : iPorta := 7;
      prCOM8 : iPorta := 8;
      prCOM9 : iPorta := 9;
   else
      iPorta := 1;
      end;

   case BaudRate of
      br2400 : iBaudRate := 0;
      br4800 : iBaudRate := 1;
      br9600 : iBaudRate := 2;
   else
      iBaudRate := 2;
      end;

   case DataBits of
      db7Bits : iDataBits := 0;
      db8Bits : iDataBits := 1;
   else
      iDataBits := 0;
      end;

   case Paridade of
      pdNenhuma : iParidade := 0;
      pdImpar   : iParidade := 1;
      pdPar     : iParidade := 2;
      pdEspaco  : iParidade := 3;
   else
      iParidade := 3;
      end;

   Result := AbrePorta(iPorta, iBaudRate, iDataBits, iParidade ) = 1;

   if Result = False then
      begin
      iPorta:=1;

      while (Result = False) and (iPorta < 9) do
         begin
         Result := AbrePorta(iPorta, iBaudRate, iDataBits, iParidade ) = 1;
         iPorta:=iPorta + 1;
         end;
      end; 
end;

function TToledo.GetWeight: Real;
begin 
  Result := StrToFloatDef(InputBox('Peso na balança', 'Informe o peso','0'),0); 
end; 

function TToledo.PegarPeso: Real; 
var 
  Retorno: Boolean;
  Peso: array[0..5]of char;
  vResposta:Integer;

  function Mensagem():String;
  begin
     Result:='*** ERRO NA LEITURA DO PESO DA BALANÇA *** '             + #13 + #13 +
      'O Sistema não conseguiu ler o peso da Balança.'                 + #13 +
      'Você pode retirar o peso e colocar novamente para nova tenta-'  + #13 +
      'tiva de leitura do peso da balança. Caso não consiga ler o peso'+ #13 +
      'da balança, você poder  digitar o peso do produto.'             + #13 + #13 + #13 +
      '[SIM] -> Para digitar o peso do produto'                        + #13 +
      '[NÃO] -> Para nova tentativa de ler o peso na balança';
  end;

  function AuxAbrirPorta():Boolean;
  begin
     Result:=AbrirPorta;

     if (Result) then
        exit;

     Result:=AbrirPorta(prCOM1);

     if (Result) then
        exit;

     Result:=AbrirPorta(prCOM2);

     if (Result) then
        exit;

     Result:=AbrirPorta(prCOM3);

     if (Result) then
        exit;

     Result:=AbrirPorta(prCOM4);

     if (Result) then
        exit;

     Result:=AbrirPorta(prCOM5);

     if (Result) then
        exit;

     Result:=AbrirPorta(prCOM6);

     if (Result) then
        exit;

     Result:=AbrirPorta(prCOM7);

     if (Result) then
        exit;

     Result:=AbrirPorta(prCOM8);

     if (Result) then
        exit;

     Result:=AbrirPorta(prCOM9);
  end;
begin
   repeat
      Retorno := AuxAbrirPorta();
      Result := 0;
      
      if (Retorno = False) then
         MessageDlg('Erro na abertura da porta COM da Balança!',mtError,[mbOk],0)
      else
         begin
         Retorno := PegaPeso( 1, Peso, '' ) = 1;
         if (Retorno) then
            begin
            Result  := StrToFloatDef(StrPas(Peso),0);
            Result  := Result/1000;
            end;
         FechaPorta();
         end;

      if (Result <= 0) or (Retorno <> True) then
         begin
         vResposta:=MessageDlg(Mensagem(), MtWarning,[mbYes,mbNo,mbCancel],0);

         if vResposta = MrYes then
            begin
            Result := GetWeight();
            Break;
            end
         else if vResposta = mrCancel then
            begin
            Result := 0.00;
            Break;
            end;
         end
      else
         Break;
   until False
end; 

procedure TToledo.SetBaudRate(const Value: TBaudRate); 
begin 
  FBaudRate := Value; 
end; 

procedure TToledo.SetDataBits(const Value: TDataBits); 
begin 
  FDataBits := Value; 
end; 

procedure TToledo.SetParidade(const Value: TParidade); 
begin 
  FParidade := Value; 
end; 

procedure TToledo.SetPorta(const Value: TPorta); 
begin 
  FPorta := Value; 
end; 

end.


Para utilizar a Unit segue abaixo um exemplo:

procedure TVendaFrm.LeituraPeso;
var Toledo:TToledo;
begin
   Toledo:=TToledo.Create(Self);

   if (portaBalanca = '1') then
      Toledo.Porta:=prCOM1
   else if (portaBalanca = '2') then
      Toledo.Porta:=prCOM2
   else if (portaBalanca = '3') then
      Toledo.Porta:=prCOM3
   else if (portaBalanca = '4') then
      Toledo.Porta:=prCOM4
   else if (portaBalanca = '5') then
      Toledo.Porta:=prCOM5
   else if (portaBalanca = '6') then
      Toledo.Porta:=prCOM6
   else if (portaBalanca = '7') then
      Toledo.Porta:=prCOM7
   else if (portaBalanca = '8') then
      Toledo.Porta:=prCOM8
   else if (portaBalanca = '9') then
      Toledo.Porta:=prCOM9;
      
   Toledo.BaudRate:=br9600;
   Toledo.DataBits:=db8Bits;
   Toledo.Paridade:=pdNenhuma;
   EditQuantidade.Text:=FormatFloat('#0.000',Toledo.PegarPeso);
   EditQuantidadeExit(Self);
   Toledo.Free;
   Toledo:=nil;
end;


Lembrando que utilizei a dll P05 para realizar a integração, a mesma pode ser encontrado para download com facilidade.
GOSTEI 0
Sergio Oliveira

Sergio Oliveira

17/12/2003

Eu desenvolvi esse artigo aqui que explica como fazer uma integração com as balanças da Urano: https://www.linkedin.com/pulse/integrate-weighing-scales-using-rxtx-library-dantas-de-oliveira/



Oi pessoal! pretendo criar programas para balanças eletronicas, gostaria de onde encontrar material para estudo na net? ou indicação de livros.

Grato,

Adriano


GOSTEI 0
POSTAR