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>.
=?ISO-8859-1?Q?Re:_Endere=E7os_de_m=E9todos_em_Java_como_obt=EA-?==?ISO-8859-1?Q?los????????=
Eduardo Issao Ito - SE Trainee - Sun do Brasil Tue, 19 Jan 1999 11:47:40 -0500