Jump to content
Fórum Script Brasil
  • 0

Capturar Peso, Preço Kilo e Preço total Toledo Prix III


Paulo Henrique de Assis

Question

Boa tarde!

Por gentileza, gostaria em saber se é possível Capturar Peso, Preço Kilo e Preço total Toledo Prix III?

Queria saber se a Toledo tem alguma função na Dll eu que consiga enviar o preço em kilo e o preço total do menu aplicativo para a balança?? Ou até mesmo capturar esses valores da balança para o meu aplicativo?

Pelo que eu vi dá para trabalhar com ela via dll, conforme tem no aplicativo de exemplo, que são :

function AbrePorta(const Porta,BaudRate,DataBits,Paridade:Integer):Integer;stdcall;external 'P05.DLL';

function FechaPorta:Integer;stdcall;external 'P05.DLL';

function FechaPortaP05:Integer;stdcall;external 'P05.DLL';

function PegaPeso(const OpcaoEscrita:integer;Peso,Local:Pchar):Integer;stdcall;external 'P05.DLL';

function PegaPesoP05B(const OpcaoEscrita,PedeTara:integer;Peso,Local:Pchar):Integer;stdcall;external 'P05.DLL';

Pois tem um teste no roteiro do PAF-ECF que diz assim:

REQUISITO XXXVIII-A

TESTES

(Observação: Este teste somente deverá ser realizado no caso de programa que funcione

com balança interligada ou integrada ao ECF, devendo constar esta condição no laudo. Para

a realização dos testes o desenvolvedor deverá disponibilizar balança computadorizada,

vedado o uso de simulador)

TESTE 93A: Controle, por meio do PAF-ECF, da interligação ou integração da balança ao

ECF.

Passo 1: Solicitar que a empresa instale o PAF-ECF com a balança integrada ou interligada

ao ECF.

Passo 2: Simule o fornecimento de alimentação a peso, colocando um objeto na balança.

Passo 3: Capture os dados gerados pela balança (peso, valor unitário e valor total) e vincule .

Por isso preciso capturar esses outros valores alem do peso!

Atenciosamente,

Paulo

Link to comment
Share on other sites

5 answers to this question

Recommended Posts

  • 0

perguntas sobre a balança

http://www.igara.com.br/faq_toledo_p03.htm

simulador de balança toledo

http://www.igara.com.br/produto.php?cod_produto=48

P05.dll para comunicação com a balança

http://www.fivewin.com.br/exibedicas.asp?id=679

exemplo de componente de comunicação

unit UTToledo; 

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); 
  public 
    function PegarPeso: Real; 
    function AbrirPorta: Integer;    
  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('Anderson', [TToledo]); 
end; 

{ TToledo } 

function TToledo.AbrirPorta: Integer; 
var 
  iPorta: Byte; 
  iBaudRate: Byte; 
  iDataBits: Byte; 
  iParidade: Byte; 
begin 
  case Porta 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 ) 
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: Integer; 
  Peso: array[0..5]of char; 
begin 
  repeat 
    Retorno := AbrirPorta; 
    Result := 0; 
    if Retorno <> 1 then 
      MessageDlg('Erro na abertura da porta COM da Balança!',mtError,[mbOk],0) 
    else 
      begin 
        Retorno := PegaPeso( 1, Peso, '' ); 
        if Retorno = 1 then 
          begin 
            Result  := StrToFloatDef(StrPas(Peso),0); 
            Result  := Result/1000; 
//            Break; 
          end; 
        FechaPorta(); 
      end; 

    if (Result <= 0) or (Retorno <> 1) then 
      begin 
        if MessageDlg('*** 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', 
            MtWarning,[mbYes,mbNo],0) = MrYes then 
          begin 
            Result := GetWeight(); 
            Break; 
          end;//-- if MessageDlg('*** ERRO ... 
      end//-- if (Result <= 0) or (Retorno <> 1) then 
    else 
      begin 
        Break; 
      end; 
  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.

abraço

Link to comment
Share on other sites

  • 0
perguntas sobre a balança

http://www.igara.com.br/faq_toledo_p03.htm

simulador de balança toledo

http://www.igara.com.br/produto.php?cod_produto=48

P05.dll para comunicação com a balança

http://www.fivewin.com.br/exibedicas.asp?id=679

exemplo de componente de comunicação

unit UTToledo; 

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); 
  public 
    function PegarPeso: Real; 
    function AbrirPorta: Integer;    
  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('Anderson', [TToledo]); 
end; 

{ TToledo } 

function TToledo.AbrirPorta: Integer; 
var 
  iPorta: Byte; 
  iBaudRate: Byte; 
  iDataBits: Byte; 
  iParidade: Byte; 
begin 
  case Porta 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 ) 
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: Integer; 
  Peso: array[0..5]of char; 
begin 
  repeat 
    Retorno := AbrirPorta; 
    Result := 0; 
    if Retorno <> 1 then 
      MessageDlg('Erro na abertura da porta COM da Balança!',mtError,[mbOk],0) 
    else 
      begin 
        Retorno := PegaPeso( 1, Peso, '' ); 
        if Retorno = 1 then 
          begin 
            Result  := StrToFloatDef(StrPas(Peso),0); 
            Result  := Result/1000; 
//            Break; 
          end; 
        FechaPorta(); 
      end; 

    if (Result <= 0) or (Retorno <> 1) then 
      begin 
        if MessageDlg('*** 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', 
            MtWarning,[mbYes,mbNo],0) = MrYes then 
          begin 
            Result := GetWeight(); 
            Break; 
          end;//-- if MessageDlg('*** ERRO ... 
      end//-- if (Result <= 0) or (Retorno <> 1) then 
    else 
      begin 
        Break; 
      end; 
  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.

abraço

Boa tarde!

Pelo que eu entendi só irei capturar o peso da balança, correto? e paga gerar o preço em kilo que é informado na própria balança, tem como?

Link to comment
Share on other sites

  • 0
Citar
Pelo que eu entendi só irei capturar o peso da balança, correto? e para pegar o preço em kilo que é informado na própria balança, tem como?

Função para tratamento do buffer geral enviado pela balança

procedure Trata_Buffer(Buffer: String; var SWA, SWB, SWC, Peso, Tara: String);

se o preço for a Tara, então voce pode fazer uma conversão de tipo

valor := strtofloat(Tara)

 

veja o que encontra na área de downloads

obs: link corrigido

http://www.igara.com.br/downloads/

 

abraço

 

 

 

Link to comment
Share on other sites

  • 0
Jhonas disse:
Citar
Pelo que eu entendi só irei capturar o peso da balança, correto? e para pegar o preço em kilo que é informado na própria balança, tem como?

Função para tratamento do buffer geral enviado pela balança

procedure Trata_Buffer(Buffer: String; var SWA, SWB, SWC, Peso, Tara: String);

se o preço for a Tara, então voce pode fazer uma conversão de tipo

valor := strtofloat(Tara)

veja o que encontra na área de downloads

http://www.igara.com.br/downloads/

 

abraço

 

Bom dia!

Por acaso você tem como disponibilizar essa procedure completa?

Se possível, mande para o meu email pha_net@yahoo.com.br

 

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.



  • Forum Statistics

    • Total Topics
      152.2k
    • Total Posts
      652k
×
×
  • Create New...