Fala Pessoal,
Estou trabalhando com uma placa de aquisição de dados (analogico/digital) cujas funções são descritas por uma DLL. junto com os manuais e drivers desta placa existem algumas bibliotecas em c/c++, delphi e vb já prontas que utilizam esta dll, no entanto como meu projeto é em java, gostaria de saber como faço para criar um .jar que sirva de API para chamar funções desta biblioteca e assim utilizar esta placa.
Desde já agradeço
Igor P. Simões
Acesso a DLL para utilizar funções de uma Placa de Aquisição de Dados (A/D)
9 Respostas
Você vai usar JNI, tem muito artigo e material sobre isso na internet, tente fazer devagar, uma função, teste e vá aumentando pra não ficar correndo atrás do rabo já que JNI costuma der um pouco de trabalho. (mas não é um bicho de 7 cabeças)
Olá
Use JNI. O único cuidado é como você cria a dll. Se usar o Visual C 6.0 é garantia de funcionar mas fazendo a dll em VB desconfio que não funciona.
[]s
Luca
Se você não tiver o VC (ou não puder pagar), pode usar tranquilamente o Dev C++: http://www.bloodshed.net/
Ele é um IDE para o GCC e é free. E com ele você terá acesso à todo a api do Windows.
Qualquer dúvida, poste aqui novamente.
Luca: Realmente, o JNI parece que só trabalha com dlls puras. O VB gera dlls ActiveX.
Olá
Exato. Fiz a observação não por causa dele que tudo indica usará C++. Na verdade estava lembrando este fato para outros leitores.
Também já usei o Dev C++ com sucesso, mas com o Borland C tive problemas que hoje já não me lembro mais.
[]s
Luca
"Use JNI. O único cuidado é como você cria a dll. Se usar o Visual C 6.0 é garantia de funcionar mas fazendo a dll em VB desconfio que não funciona. "…
bem, a dll já existe…junto com o os drivers da placa vem uma dll…e tb vem arquivos tipo “.h” no caso de c/c++, “.pas” no caso do delphi, arquivos estes que referenciam as funções da dll e são utilizados em aplicações no c builder ou no delphi para trabalhar com a placa…o que eu queria é que tivesse um “.jar” para trabalhar com a placa no java…mas não há…terei que criar um para usar as funcionalidades da dll em java… alguém já teve experiencia parecida?
Olá
Você tem um programa Java que não consegue acessar sua dll que já está pronta. O que precisa fazer são funções em C que conseguem acessar sua dll e que ao mesmo tempo sigam as regras do JNI para poderem ser acessadas pelo Java. É isto, coisa bem simples. Leia o tutorial que passei. Ele é bem tranqüilo.
[]s
Luca
Você leu sobre JNI?
Ele é justamente para isso … vc tem uma biblioteca nativa (DLL), vai precisar escrever uma classe Java que represente o acesso a esta biblioteca e também uma outra DLL que respeite os contratos (regras, seja lá qual for o nome) de uma chamada JNI (pra te ajduar vc tem o javah) e internamente vai chamar a DLL do fabricante.
Por isso os comentário sao pertinentes, vc vai ter que usar um compilador C pra gerar essa dll intermediária.

Lembrando que existem alguns produtos que juram fazer a ponte JAVA-NATIVE_CODE sem dor de cabeça, nunca usei mas vc pdoe testar (um aqui, mas existe pelo menos um outro que eu já vi mas nao lembro e nao ta anunciando no Google
)
Vc tb pode usar ActiveX (se o fornecedor não distribuir e vc tiver que escrever o trabalho é quase o mesmo e fica com cara de gambiarra fedida) com o Jacob.
E como de costume, se você quer a referência definitiva sobre JNI, pode ler o livro do cara que definiu a JNI - Sheng Liang - e que pode ser baixado de:
blza…entao vamos recapitular… eu tenho junto ao material da placa um arquivo “.h” e um “.c” que representa a implementação. Estes arquivos devem estar de acordo com a formatação do JNI para poderem ser usados pelo java, tipo “JNIEXPORT jstring JNICALL Java_Prompt_getLine(JNIEnv *, jobject, jstring);”…certo?
quando todos os métodos estiverem formatados corretamente, eu crio a dll e chamo o programa em java que carrega a mesma e utiliza os seus métodos …certo?
bem…quer dizer…eu chamo uma dll que contem os metodos que chamam a dll principal…seria isso?
Se tudo estiver correto…será que existe alguma ferramenta que pegue um codigo “.c” normal e formate-o para o padrão JNI? outra coisa…como eu uso o javah no NetBeans?
Valeu Galera…vcs tão ajudando muito