Acesso a DLL para utilizar funções de uma Placa de Aquisição de Dados (A/D)  XML
Índice dos Fóruns » Assuntos gerais (Off-topic)
Autor Mensagem
igorps
Thread.start()

Membro desde: 11/04/2005 15:21:44
Mensagens: 44
Offline

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
smota
Moderador
[Avatar]

Membro desde: 21/02/2003 16:19:19
Mensagens: 1647
Offline

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)

"Perfection is reached not when there's nothing more to add but when there's no more to take out"
Luca
Moderador
[Avatar]

Membro desde: 06/09/2002 14:30:10
Mensagens: 5810
Localização: São Paulo/SP ou Paraty/RJ
Offline

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

Dare Obasanjo (Program Manager at Microsoft)
"The folks I know from across the industry who have to build large scale Web services on the Web today at Google, Yahoo!, Facebook, Windows Live, Amazon, etc are using RESTful Web services. The only times I encounter someone with good things to say about WS-* is if it is their job to pimp these technologies or they have already "invested" in WS-* and want to defend that investment."


CEP, JMS, JMX e coisas afins (ou não)
http://lucabastos.blogspot.com/
[Email] [WWW]
delberto
What is classpath?

Membro desde: 29/09/2002 14:04:35
Mensagens: 6
Localização: Belém/Pará
Offline

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.




Delberto Muniz
Analista/Desenvolvedor Java
Desenvolvedor Certificado MSX 1/2/2+
Certificação Assembly Z-80A

"Aproveite cada dia de sua vida como se fosse o último. Um dia, vai ser mesmo"
Alfred E. Newman
[MSN] [ICQ]
Luca
Moderador
[Avatar]

Membro desde: 06/09/2002 14:30:10
Mensagens: 5810
Localização: São Paulo/SP ou Paraty/RJ
Offline

Olá

delberto wrote:JNI parece que só trabalha com dlls puras.


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

Dare Obasanjo (Program Manager at Microsoft)
"The folks I know from across the industry who have to build large scale Web services on the Web today at Google, Yahoo!, Facebook, Windows Live, Amazon, etc are using RESTful Web services. The only times I encounter someone with good things to say about WS-* is if it is their job to pimp these technologies or they have already "invested" in WS-* and want to defend that investment."


CEP, JMS, JMX e coisas afins (ou não)
http://lucabastos.blogspot.com/
[Email] [WWW]
igorps
Thread.start()

Membro desde: 11/04/2005 15:21:44
Mensagens: 44
Offline

"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?
Luca
Moderador
[Avatar]

Membro desde: 06/09/2002 14:30:10
Mensagens: 5810
Localização: São Paulo/SP ou Paraty/RJ
Offline

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

Dare Obasanjo (Program Manager at Microsoft)
"The folks I know from across the industry who have to build large scale Web services on the Web today at Google, Yahoo!, Facebook, Windows Live, Amazon, etc are using RESTful Web services. The only times I encounter someone with good things to say about WS-* is if it is their job to pimp these technologies or they have already "invested" in WS-* and want to defend that investment."


CEP, JMS, JMX e coisas afins (ou não)
http://lucabastos.blogspot.com/
[Email] [WWW]
smota
Moderador
[Avatar]

Membro desde: 21/02/2003 16:19:19
Mensagens: 1647
Offline

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.

"Perfection is reached not when there's nothing more to add but when there's no more to take out"
thingol
Moderador

Membro desde: 29/07/2004 16:10:13
Mensagens: 17543
Offline

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:

http://java.sun.com/docs/books/jni/download/jni.pdf
[WWW]
igorps
Thread.start()

Membro desde: 11/04/2005 15:21:44
Mensagens: 44
Offline

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

 
Índice dos Fóruns » Assuntos gerais (Off-topic)
Ir para:   
Powered by JForum 2.1.8 © JForum Team