DLL PCLINK6 NO FORMS (BALANÇA TOLEDO)

Dicas do Oracle Forms Builder - Blocos, Itens, LOV, Canvas, Triggers, comandos, PLL, d2kwutil, FMB, Alert, menus, etc
Responder
atb
Rank: Estagiário Sênior
Rank: Estagiário Sênior
Mensagens: 9
Registrado em: Ter, 08 Jan 2008 8:33 am
Localização: SP
Adriano Barone

Boas Srs....

alguém já conseguiu conectar uma balança toledo atraves da Dll PcLink6 no forms.

Eu escrevi a Pll com as chamadas da Dll, porém não consigo conectar na balança.

Se alguém tiver alguma dica ou a solução, agradeço!

[]'s
Avatar do usuário
dr_gori
Moderador
Moderador
Mensagens: 5024
Registrado em: Seg, 03 Mai 2004 3:08 pm
Localização: Portland, OR USA
Contato:
Thomas F. G

Você já respondeu a dúvida de alguém hoje?
https://glufke.net/oracle/search.php?search_id=unanswered

Dá algum erro?
atb
Rank: Estagiário Sênior
Rank: Estagiário Sênior
Mensagens: 9
Registrado em: Ter, 08 Jan 2008 8:33 am
Localização: SP
Adriano Barone

Não... mas não consigo fazer a conexão com a balança, simplesmente o comando não funciona... Estou usando uma pll com os comando ora_ffi para acessar a dll...

Obrigado
Tineks
Rank: DBA Sênior
Rank: DBA Sênior
Mensagens: 365
Registrado em: Ter, 24 Mai 2005 2:24 pm
Localização: Araraquara - SP
Cristiano (Tineks)
Araraquara - SP

A dll que você está utilizando é a PCLINK32.DLL ??

[]'s
atb
Rank: Estagiário Sênior
Rank: Estagiário Sênior
Mensagens: 9
Registrado em: Ter, 08 Jan 2008 8:33 am
Localização: SP
Adriano Barone

É a PCLINK6.DLL, foi comprada na Toledo do Brasil, junto com a HardKey para funcionar a leitura.

O programa de testes deles (feito em Delfhi e outro VB) funcionam, eles conseguem conectar e buscar o peso da balança, porém no forms, não consigo nem conectar....

Obrigado.
Trevisolli
Moderador
Moderador
Mensagens: 2016
Registrado em: Qua, 12 Jan 2005 3:25 pm
Localização: Araraquara - SP
Abraço,

Trevisolli
OCA Oracle PL/SQL Developer Certified Associate
OCP Oracle Forms Developer Certified Professional
Araraquara-SP

Brother,

Tem como você postar aqui, a chamada que você está fazendo desta DLL?
Fica mais fácil pra podermos ajudá-lo.
atb
Rank: Estagiário Sênior
Rank: Estagiário Sênior
Mensagens: 9
Registrado em: Ter, 08 Jan 2008 8:33 am
Localização: SP
Adriano Barone

Ok, vamos lá...

A function que conecta na balança (segundo o manual) é a W9091Serial, eu passo o número da porta serial, e esta function deveria retornar um outro número (>0) que seria o "canal" (o parâmetro para todas as outras functions).

Este código encontra-se em uma pll.

Muito obrigado.

Selecionar tudo

Package MsvToledo Is

    Dll_File$         Ora_Ffi.LibHandleType;
    DLL_Name$         VarChar2(2000) := 'PCLINK6.DLL';
    DLL_Path$         VarChar2(2000) := 'C:\WINNT\SYSTEM32\';
    ErrorNumber$      VarChar2(2000);
    ErrorDescription$ VarChar2(2000);

   Function W9091Serial(Porta_Com$ In Pls_Integer) Return Number;

   Function Select_Canal(Canal$ In Pls_Integer) Return Number;

   Function Update_Canal(Canal$ In Pls_Integer) Return Number;
   
   Function Gross_Canal(Canal$ In Pls_Integer) Return Number;
   
   Function Tare_Canal(Canal$ In Pls_Integer) Return Number;
   
   Function Net_Canal(Canal$ In Pls_Integer) Return Number;
   
   
End;


Package Body MsvToledo Is

   FH_W9091Serial$           Ora_Ffi.FuncHandleType;
   FH_Select_Canal$          Ora_Ffi.FuncHandleType;
   FH_Update_Canal$          Ora_Ffi.FuncHandleType;
   FH_Gross_Canal$           Ora_Ffi.FuncHandleType;
   FH_Tare_Canal$            Ora_Ffi.FuncHandleType;
   FH_Net_Canal$             Ora_Ffi.FuncHandleType;
   
   DllError$                 Exception;

   Error01$                  VarChar2(3)  := '001';
   ErrorMessage01$           VarChar2(100):= 'Erro na Abertura de ' || Dll_Path$ || DLL_Name$;
   Error02$                  VarChar2(3)  := '002';
   ErrorMessage02$           VarChar2(100):= 'Erro W9091Serial';
   Error03$                  VarChar2(3)  := '003';
   ErrorMessage03$           VarChar2(100):= 'Erro Select_Canal';
   Error04$                  VarChar2(3)  := '004';
   ErrorMessage04$           VarChar2(100):= 'Erro Update_Canal';
   Error05$                  VarChar2(3)  := '005';
   ErrorMessage05$           VarChar2(100):= 'Erro Gross_Canal';
   Error06$                  VarChar2(3)  := '006';
   ErrorMessage06$           VarChar2(100):= 'Erro Tare_Canal';
   Error07$                  VarChar2(3)  := '007';
   ErrorMessage07$           VarChar2(100):= 'Erro Net_Canal';


   ------------------------------------------------------------------------------------ 
   --------------------------- Interface com a DLL
   ------------------------------------------------------------------------------------

   Function FF_W9091Serial(FuncHandle$ In Ora_Ffi.FuncHandleType,
                           Porta_Com$  In Pls_Integer) Return Return Number;
   Pragma Interface(C, FF_W9091Serial, 11265);   

   Function FF_Select_Canal(FuncHandle$ In Ora_Ffi.FuncHandleType,
                            Canal$      In Pls_Integer) Return Number;
   Pragma Interface(C, FF_Select_Canal, 11265);   

   Function FF_Update_Canal(FuncHandle$ In Ora_Ffi.FuncHandleType,
                            Canal$      In Pls_Integer) Return Number;
   Pragma Interface(C, FF_Update_Canal, 11265);   

   Function FF_Gross_Canal(FuncHandle$ In Ora_Ffi.FuncHandleType,
                           Canal$      In Pls_Integer) Return Number;
   Pragma Interface(C, FF_Gross_Canal, 11265);   

   Function FF_Tare_Canal(FuncHandle$ In Ora_Ffi.FuncHandleType,
                          Canal$      In Pls_Integer) Return Number;
   Pragma Interface(C, FF_Tare_Canal, 11265);   

   Function FF_Net_Canal(FuncHandle$ In Ora_Ffi.FuncHandleType,
                         Canal$      In Pls_Integer) Return Number;
   Pragma Interface(C, FF_Net_Canal, 11265);   
   
   ------------------------------------------------------------------------------------ 
   --------------------------- Funções para o FORMS
   ------------------------------------------------------------------------------------

   --- W9091Serial
   Function W9091Serial(Porta_Com$ In Pls_Integer,
                        Erro$      Out Varchar2) Return Number
   Is
     Canal$ Number; 
   Begin

      Canal$ := FF_W9091Serial(FH_W9091Serial$,
                               Porta_Com$);
       Return (Canal$);

     RETURN NULL; Exception
       When Others Then
            ErrorNumber$      := SqlCode;
            ErrorDescription$ := 'MsvToledo.W9091Serial - COM ' || Porta_Com$ || ' -> ' || tool_err.message;
            Erro$ := ErrorDescription$;
            Return Null;

   End W9091Serial;
                   
     
   --- Select_Canal
   Function Select_Canal(Canal$ In Pls_Integer) Return Number

   Is
     Retorno$ Number; 
   Begin

       Retorno$ := FF_Select_Canal(FH_Select_Canal$,
                                   Canal$);
       Return (Retorno$);

     RETURN NULL; Exception
       When Others Then
            ErrorNumber$      := SqlCode;
            ErrorDescription$ := 'MsvToledo.Select_Canal - Canal ' || Canal$ || ' - ' || SqlErrm;
            Return Null;

   End Select_Canal;

   --- Update_Canal
   Function Update_Canal(Canal$ In Pls_Integer) Return Number

   Is
     Retorno$ Number; 
   Begin

       Retorno$ := FF_Update_Canal(FH_Update_Canal$,
                                   Canal$);
       Return (Retorno$);

     RETURN NULL; Exception
       When Others Then
            ErrorNumber$      := SqlCode;
            ErrorDescription$ := 'MsvToledo.Update_Canal - Canal ' || Canal$ || ' - ' || SqlErrm;
            Return Null;

   End Update_Canal;

   --- Gross_Canal
   Function Gross_Canal(Canal$ In Pls_Integer) Return Number

   Is
     Retorno$ Number; 
   Begin

       Retorno$ := FF_Gross_Canal(FH_Gross_Canal$,
                                  Canal$);
       Return (Retorno$);

     RETURN NULL; Exception
       When Others Then
            ErrorNumber$      := SqlCode;
            ErrorDescription$ := 'MsvToledo.Gross_Canal - Canal ' || Canal$ || ' - ' || SqlErrm;
            Return Null;

   End Gross_Canal;

   --- Tare_Canal
   Function Tare_Canal(Canal$ In Pls_Integer) Return Number

   Is
     Retorno$ Number; 
   Begin

       Retorno$ := FF_Tare_Canal(FH_Tare_Canal$,
                                 Canal$);
       Return (Retorno$);

     RETURN NULL; Exception
       When Others Then
            ErrorNumber$      := SqlCode;
            ErrorDescription$ := 'MsvToledo.Tare_Canal - Canal ' || Canal$ || ' - ' || SqlErrm;
            Return Null;

   End Tare_Canal;

   --- Net_Canal
   Function Net_Canal(Canal$ In Pls_Integer) Return Number

   Is
     Retorno$ Number; 
   Begin

       Retorno$ := FF_Net_Canal(FH_Net_Canal$,
                                Canal$);
       Return (Retorno$);

     RETURN NULL; Exception
       When Others Then
            ErrorNumber$      := SqlCode;
            ErrorDescription$ := 'MsvToledo.Net_Canal - Canal ' || Canal$ || ' - ' || SqlErrm;
            Return Null;

   End Net_Canal;

   ------------------------------------------------------------------------------------ 
   --------------------------- Inicializa DLL
   ------------------------------------------------------------------------------------

   Begin

     Begin
      Dll_File$ := Ora_Ffi.Load_Library(DLL_Path$,DLL_Name$);

     Exception
       When Others Then
            ErrorNumber$      := Error01$;
            ErrorDescription$ := ErrorMessage01$;
            Raise DllError$;
     End;

     --FH_W9091Serial
     Begin
      FH_W9091Serial$ := Ora_Ffi.Register_Function(Dll_File$,'W9091Serial',Ora_Ffi.C_STD);
      Ora_Ffi.Register_Return(FH_W9091Serial$, Ora_Ffi.C_INT); 
      Ora_Ffi.Register_Parameter(FH_W9091Serial$, Ora_Ffi.C_LONG);

     Exception
       When Others Then
            ErrorNumber$      := Error02$;
            ErrorDescription$ := ErrorMessage02$;
            Raise DllError$;
     End;   

     --FH_Select_Canal
     Begin
      FH_Select_Canal$ := Ora_Ffi.Register_Function(Dll_File$,'Select_Canal',Ora_Ffi.C_STD);
      Ora_Ffi.Register_Return(FH_Select_Canal$, Ora_Ffi.C_INT); 
      Ora_Ffi.Register_Parameter(FH_Select_Canal$, Ora_Ffi.C_LONG);

     Exception
       When Others Then
            ErrorNumber$      := Error03$;
            ErrorDescription$ := ErrorMessage03$;
            Raise DllError$;
     End;   

     --FH_Update_Canal
     Begin
      FH_Update_Canal$ := Ora_Ffi.Register_Function(Dll_File$,'Update_Canal',Ora_Ffi.C_STD);
      Ora_Ffi.Register_Return(FH_Update_Canal$, Ora_Ffi.C_INT); 
      Ora_Ffi.Register_Parameter(FH_Update_Canal$, Ora_Ffi.C_LONG);

     Exception
       When Others Then
            ErrorNumber$      := Error04$;
            ErrorDescription$ := ErrorMessage04$;
            Raise DllError$;
     End;  

     --FH_Gross_Canal
     Begin
      FH_Gross_Canal$ := Ora_Ffi.Register_Function(Dll_File$,'Gross_Canal',Ora_Ffi.C_STD);
      Ora_Ffi.Register_Return(FH_Gross_Canal$, Ora_Ffi.C_INT); 
      Ora_Ffi.Register_Parameter(FH_Gross_Canal$, Ora_Ffi.C_LONG);

     Exception
       When Others Then
            ErrorNumber$      := Error05$;
            ErrorDescription$ := ErrorMessage05$;
            Raise DllError$;
     End;  


     --FH_Tare_Canal
     Begin
      FH_Tare_Canal$ := Ora_Ffi.Register_Function(Dll_File$,'Tare_Canal',Ora_Ffi.C_STD);
      Ora_Ffi.Register_Return(FH_Tare_Canal$, Ora_Ffi.C_INT); 
      Ora_Ffi.Register_Parameter(FH_Tare_Canal$, Ora_Ffi.C_LONG);

     Exception
       When Others Then
            ErrorNumber$      := Error06$;
            ErrorDescription$ := ErrorMessage06$;
            Raise DllError$;
     End;  

     --FH_Net_Canal
     Begin
      FH_Net_Canal$ := Ora_Ffi.Register_Function(Dll_File$,'Net_Canal',Ora_Ffi.C_STD);
      Ora_Ffi.Register_Return(FH_Net_Canal$, Ora_Ffi.C_INT); 
      Ora_Ffi.Register_Parameter(FH_Net_Canal$, Ora_Ffi.C_LONG);

     Exception
       When Others Then
            ErrorNumber$      := Error07$;
            ErrorDescription$ := ErrorMessage07$;
            Raise DllError$;
     End;  

     --FirVer
     Begin
      FH_FirVer$ := Ora_Ffi.Register_Function(Dll_File$,'FirVer',Ora_Ffi.C_STD);
      Ora_Ffi.Register_Return(FH_Net_Canal$, Ora_Ffi.C_INT); 
      Ora_Ffi.Register_Parameter(FH_Net_Canal$, Ora_Ffi.C_CHAR);
      Ora_Ffi.Register_Parameter(FH_Net_Canal$, Ora_Ffi.C_CHAR);
      Ora_Ffi.Register_Parameter(FH_Net_Canal$, Ora_Ffi.C_CHAR);
      Ora_Ffi.Register_Parameter(FH_Net_Canal$, Ora_Ffi.C_CHAR);
      Ora_Ffi.Register_Parameter(FH_Net_Canal$, Ora_Ffi.C_CHAR);

     Exception
       When Others Then
            ErrorNumber$      := Error07$;
            ErrorDescription$ := ErrorMessage07$;
            Raise DllError$;
     End;  
   Exception
     When DllError$ Then
          Message(ErrorNumber$ || ' - ' || ErrorDescription$);
          Message(ErrorNumber$ || ' - ' || ErrorDescription$);
     When Others Then
          ErrorNumber$      := SqlCode;
          ErrorDescription$ := SqlErrm;
          Message(SqlCode || '-' || SqlErrm);
          Message(SqlCode || '-' || SqlErrm);

   End;
Bel-Kyor
Rank: Estagiário Pleno
Rank: Estagiário Pleno
Mensagens: 3
Registrado em: Qua, 16 Jul 2008 4:52 pm
Localização: são Paulo - SP
Contato:

Adriano, bom dia

Você está tentando executar isso localmente? via client/server ?

Te pergunto isso pois aqui na empresa onde trabalho, utilizamos o Oracle Applications e hoje para ler o peso da balança é utilizado o sistema da Toledo, Guardian.

Surgiu a necessidade de integrar a leitura de peso dentro do sistema ERP.
porem o forms no nosso caso é executado pelo servidor, não existe client instalado no computador da balança.

também gostaria de pedir um auxilio para transformar a pclink6.dll em pll
Ou se puder me enviar essa library que você criou, vou fazer funcionar no client/server para depois jogar no servidor.Se isso não fuincionar, como ultimo recurso vamos criar uma classe Java compilada dentro da base de dados para fazer essa integração, mas não gostaria que chegasse a esse ponto.

Desde já Muito Obrigado
Belks
Trevisolli
Moderador
Moderador
Mensagens: 2016
Registrado em: Qua, 12 Jan 2005 3:25 pm
Localização: Araraquara - SP
Abraço,

Trevisolli
OCA Oracle PL/SQL Developer Certified Associate
OCP Oracle Forms Developer Certified Professional
Araraquara-SP

Brother,

Como não existe um micro ligado diretamente à balança, essa leitura deve obrigatóriamente ser realizada via IP, correto?

Caso seja isso, eu tenho os passos e tenho extrair as informações mais importantes e postar aqui pra vocês.
Avatar do usuário
Porva
Rank: DBA Sênior
Rank: DBA Sênior
Mensagens: 342
Registrado em: Seg, 29 Jan 2007 7:36 am
Localização: São Paulo/SP
Rafael S. Nunes
São Paulo/SP

Pessoal, beleza?

aproveitando um tópico antigo...

seguinte, vi vários tópicos sobre o assunto de configuração da balança Toledo para ser utilizada no Forms, mas sou leigo total no assunto e preciso agora fazer uma Toledo IND 780 funcionar no Oracle EBS R11!

quais os componentes são necessários para que isso seja possível, é preciso fazer setups no EBS?

o cliente tinha um modelo JundiaiSP2400 que funcionava e foi trocada pela Toledo, agora precisa ser reconfigurada mas não sabem como fazer.

pelas poucas (e confusas) anotações que vi, parece que fazem até referência a classe Java, isso realmente é necessário ou somente a DLL do fabricante?

pra ajudar, a balança está conectada em uma máquina no Mato Grosso (estou em SP), a DLL precisa estar local nessa máquina e somente seria possível realizar testes a partir desse computador?

enfim, se puderem me dar esclarecer melhor será uma boa ajuda.
valeu
Responder
  • Informação
  • Quem está online

    Usuários navegando neste fórum: Nenhum usuário registrado e 13 visitantes