Acho que a melhor maneira e' voce fazer um wrapper em C para as funcoes de 
callback. Assim, voce passa para a api da dll um ponteiro para uma funcao em C, 
que simplesmente chama um metodo Java.
Na verdade, acho que nao existe outro meio de se implementar isso, pois para a 
dll chamar a funcao de callback, tambem e necessario faze-lo atraves da JNI.

Uma outra alternativa e' acessar diretamente o dispositivo de leitura, se o 
protocolo de comunicacao nao for muito complexo, e o dispositivo estiver 
conectado numa porta serial ou paralela. Usando a Communications API, isso e' 
mais facil do que pode parecer. Eu fiz um programinha para acessar uma 
impressora termica, daquelas de shopping centers.


> Date: Tue, 19 Jan 1999 14:29:57 -0200
> From: Frederico Charles Simplicio Faria <[EMAIL PROTECTED]>
> To: [EMAIL PROTECTED]
> Cc: [EMAIL PROTECTED]
> Subject: Re: Endereços de métodos em Java como obtê-los???????
> 
> 
> 
> F&G escreveu:
> 
> >  Bem pessoal, eu gosto de Java e eu gostaria desenvolver qualquer tipo
> > de aplicação para qualquer plataforma utilizando esta linguagem.
> > Apesar de eu conhecer C e C++ acho Java menos carregada sintaticamente
> > do que estas linguagens. Nesta semana eu estou tendo uma experiência
> > bastante interessante. Um (futuro) cliente quer desenvolver aplicações
> > para plataforma windows de um dispositivo para leitura de de
> > impressões digitais. O fabricante do equipamento fornece um sdk que
> > são dlls para desenvolever tais aplicações.Portanto, se eu for usar
> > Java, terei que implementar métodos nativos para chamar as funções
> > desta dll. O problema é que algumas das funçoes são utilizadas para
> > passar funções de "call Back".Resumindo, eu terei que passar  o
> > endereço de um método em Java ( a função de call back). Como obter o
> > endereço de um método definido em Java ? Quando se pensa em métodos
> > nativos é sempre no sentido de implentar um método de Java em C. O
> > problema inverso , isto é, é dada uma função  C e se deseja chamá-la
> > através de um método (estático) não é enfatizado. Por exemplo digamos
> > que nesta  dll tenha uma função cujo protótipo
> > seja                                       int * f(int * a); Como
> > seria  assinatura do corresponderte método estático nativo em Java ?
> > Digamos que nesta dll tenha uma estrutura por exemplo:
> > typedef  void (*FUN)(int);       struct qualquer
> > {                               FUN x;                            };
> > Como seria a correspondente classe em Java ?
> 
> 
>  A especificação JNI  fornece uma API para  invocar metodos de Java em
> código nativo. Agora é claro
> que não é possível gerar a partir de um método nativo a assinatura para
> um método Java. Imagine se a Sun
> tivesse que se ocupar com geração de assinatura para toda linguagem
> nativa ?!
> 
> Te,
> 
> Fred.
> 
> 

--
Eduardo Issao Ito <[EMAIL PROTECTED]>
System Engineer, Sun do Brasil
Tel. 5181-8988 ext 58291

"More computing sins are committed in the name of efficiency (without
necessarily achieving it) than for any other single reason - including blind
stupidity."
- W.A. Wulf

* Para nao receber mais e-mails da lista, acesse 
<http://www.sun.com.br:8080/guest/RemoteAvailableLists>, coloque seu e-mail, escolha a 
lista <[EMAIL PROTECTED]> e de um <submit>.

Responder a