Leitura de dados atraves de porta RS232

Dicas do Oracle Forms Builder - Blocos, Itens, LOV, Canvas, Triggers, comandos, PLL, d2kwutil, FMB, Alert, menus, etc
Responder
marlonpasquali
Rank: DBA Pleno
Rank: DBA Pleno
Mensagens: 248
Registrado em: Sex, 06 Fev 2009 3:02 pm
Localização: ERECHIM - RS

Bom dia,
Preciso de uma ajuda de vocês. Temos uma balança da marca Filizola para pesagens de cargas. Ela possui uma comunicaçao atraves de porta RS232. Tem como atraves de um Forms buscar a informaçao do peso que mostra nessa balança conectando essa porta ao computador ? alguém já fez isso ?
poderiam me dar uma dicas por favor.

muito obrigado,

Marlon
diegolenhardt
Moderador
Moderador
Mensagens: 1177
Registrado em: Qui, 15 Out 2009 10:28 am
Localização: Recife

Com o pacote ORA_FFI você "implementa" a DLL da balanca, criando um PLL por exemplo no forms pra usar nos seus fontes.
marlonpasquali
Rank: DBA Pleno
Rank: DBA Pleno
Mensagens: 248
Registrado em: Sex, 06 Fev 2009 3:02 pm
Localização: ERECHIM - RS

Galera,
alguém teria algum exemplo de um Form que tenha essa funcionalidade?
se puderem me enviar, por favor eu preciso muito de um exemplo.Não estou conseguindo implementar.
meu e-mail:
marlon.pasquali@peccin.com.br

obrigado,
Marlon
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, beleza?

Cara, há anos atrás, fiz a implementação do Forms pra rodar com a Balança Toledo, versão 6, para pesagem de cargas.

As procedures se encontram nesse link, onde trabalho com ORA_FFI:

http://glufke.net/oracle/viewtopic.php?t=3228&highlight=toledo

Espero te-lo ajudado.
qualquer coisa, manda pra gente.
marlonpasquali
Rank: DBA Pleno
Rank: DBA Pleno
Mensagens: 248
Registrado em: Sex, 06 Fev 2009 3:02 pm
Localização: ERECHIM - RS

Trevisolli, me dá uma ajuda ai por favor.
Neste balança que estou trabalhando, a Dll possui 3 funçoes:
- InicializaBalanca( INT balanca)
- FinalizaLeitura ( INT balanca)
- ObtemInformacao (INT balanca, INT informacao)

Fiz a package abaixo , mas está dando os erros:
'ABREDLL' must be declared
A subprogram body must be defined INICIALIZABALANCA
A subprogram body must be defined FINALIZABALANCA
A subprogram body must be defined OBTEMINFORMACAO

sendo que fiz assim:

Selecionar tudo

PACKAGE BODY balanca IS
  retorno    number;
  retorno1   ora_ffi.libhandletype;   -- Variável utilizada no corpo do pacote
  Bal        ora_ffi.funchandletype;  -- Seta a balanca
  
  Function InicializaBalanca (NumBal IN number) RETURN BINARY_INTEGER;
       
  Function FinalizaBalanca (NumBal IN number) RETURN BINARY_INTEGER;
         
  Function ObtemInformacao (NumBal IN number,TipoVal IN number) RETURN BINARY_INTEGER;
              
       
  PROCEDURE Ler_Peso IS
  
  Peso number;
  
  
  BEGIN
  	ABREDLL;
 	END ler_peso;       

  
  
  Procedure ABREDLL IS
  
    begin  
        BEGIN
           retorno1 := Ora_Ffi.Load_Library('C:\Windows\System32\','pcscale.dll');
          EXCEPTION
             WHEN OTHERS THEN
                       set_alert_property ( 'B_APONTADOR', ALERT_MESSAGE_TEXT, 'DLL da balaça não encontrada !!!');
                       retorno := show_alert ( 'B_APONTADOR');	

        END;
         
        /* Registra a função da DLL. */
        bal := Ora_Ffi.Register_Function(retorno1, 'InicializaBalanca', Ora_Ffi.C_Std);

        /* Registra a variável da função e da DLL. */
        Ora_Ffi.Register_Parameter (bal, Ora_Ffi.C_CHAR_PTR);

        /* Registra o Tipo de Retorno da DLL. */
        Ora_Ffi.Register_Return (bal, Ora_Ffi.C_INT);

        ------------------------------------------------

        /* Registra a função da DLL. */
        bal := Ora_Ffi.Register_Function(retorno1, 'FinalizaLeitura', Ora_Ffi.C_Std);

        /* Registra a variável da função e da DLL. */
        Ora_Ffi.Register_Parameter (bal, Ora_Ffi.C_CHAR_PTR);

        /* Registra o Tipo de Retorno da DLL. */
        Ora_Ffi.Register_Return (bal, Ora_Ffi.C_INT);
        -------------------------------------------------
        
        /* Registra a função da DLL. */
        bal := Ora_Ffi.Register_Function(retorno1, 'ObtemInformacao', Ora_Ffi.C_Std);

        /* Registra a variável da função e da DLL. */
        Ora_Ffi.Register_Parameter (bal, Ora_Ffi.C_CHAR_PTR);

        /* Registra o Tipo de Retorno da DLL. */
        Ora_Ffi.Register_Return (bal, Ora_Ffi.C_INT);
    end;

END balanca;
me ajuda a resolver essa encrenca ai....
obrigado,
Marlon
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, beleza?
To num cliente esses dias, mas, pelo que percebi, faltou você criar algumas procedures ou functions, como a ABREDLL.

Dá uma olhada se a criou anteriormente, beleza?
marlonpasquali
Rank: DBA Pleno
Rank: DBA Pleno
Mensagens: 248
Registrado em: Sex, 06 Fev 2009 3:02 pm
Localização: ERECHIM - RS

Dae beleza Trevisolli,

realmente faltava definir na Package Spec, mas mesmo assim continua dando os erros. Na verdade ainda não consegui entender a logica desta rotina. Não sei onde vou chamar uma destas 3 funçoes e onde passar o parametro ou receber de volta o peso lido.

Quando tiver um tempinho, se puder me ajudar a resolver isso, te agradeço.

falou,
abraço!
Responder
  • Informação
  • Quem está online

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