Acesso a activex objects ocx... JNI?

Pessoal… seguinte

to trabalhando num projeto pra faculdade… que consiste em ligar uma fresadora CNC na internet… enfim… receber e enviar dados para uma maquina…

a comunicacao do PC com a maquina é feita atraves de uma placa da siemens… o qual eu tenho acesso por um OCX.

Só que como o projeto é feito pra rodar na internet, provavelmente um applet… eu preciso ter acesso ao OCX por java…

Vcs poderiam me aconselhar sobre como proceder?? Sei que JNI faz interaçao de java com codigo nativo… mas gostaria de saber se funciona pra esse meu projeto, e se é a melhor opção.

E com JNI eu conseguiria deixar um programa rodando, e disponibilizar alguns dados para recuperar em tempo real, atraves do java?

qualquer ajuda é benvinda!

obrigado

Bom, não é porque é Java e Internet que tem de ser uma applet. Se você tentar usar uma applet para fazer isso vai descobrir que vai ter muitos, muitos problemas.

Pode ser algo de duas camadas - por exemplo, o Java para mostrar uma página Web (usando o Tomcat, por exemplo) e a OCX que controla a máquina sendo chamada por uma aplicação feita em alguma linguagem em que seja fácil usar OCXs, como Delphi ou VB 6.0.

Para o Tomcat falar com essa aplicação, poderíamos usar sockets, por exemplo (O VB 6.0 não é muito legal com sockets, então seria o Delphi mesmo).

Para mostrar as coisas em tempo real, talvez fosse necessário ter uma applet (agora sim; mas ela serve só para visualização e controle remoto; não é para chamar a OCX) que ficasse se comunicando diretamente via sockets com a aplicação que controla a máquina. Mas é bom examinar direito o que você quer, e perguntar para alguém que saiba melhor essas coisas de arquitetura de sistemas.

Não sei se há uma maneira simples de incluir uma OCX em uma aplicação Java. Não sei, por exemplo, se um programa SWT ( veja www.eclipse.org ) poderia fazer isso facilmente. Existe uma coisa que é um “ActiveX Bridge” mas funciona na direção contrária (ou seja, incluir um componente Java em uma aplicação VB 6.0), mas não é o que você quer, e também não funciona lá essas coisas.

entao…

esse activex bridge eu achei tbm… mas ao contrario nao me ajuda em nada…

outra coisa…

o programa da internet precisa ser atualizado em tempo real… de forma rapida e com intervalos de tempo menores possivel… entao acho q nao tem outra forma de fazer isso sem ser applet…

achei legal essa ideia de sockets… vc pode me dizer onde posso ler sobre isso???

valeu pela ajuda!!

O seu caso funcionaria melhor pensando em dividir o seu problema em duas partes (como se fosse um controle remoto).

Um dos computadores (A) controla a máquina usando a OCX. Esse controle pode ser feito com um programa em Delphi.
Dependendo daria até para usar um pacote chamado Jacob ( http://danadler.com/jacob ) para tentar carregar a OCX em Java, mas não recomendo isso se você não quer perder peças na sua fresadora.

O outro computador (B) , que está na Internet, tem uma página com uma applet, que fala via sockets com essa máquina A. Esse applet faz duas coisas:

  • Mostra o status
  • Envia os comandos.

Bom, e programação de sockets (TCP/IP) é fácil de encontrar por aí. Converse com qualquer aluno da Engenharia de Computação para saber como é que se faz.