Læse OLE Automation data fra Java

Tags:    java

Hej Udviklere.

Jeg sidder med et projekt, hvor et kommercielt program læser noget sensordata.

Dette data skal jeg have overført til mit Java program. Datastrømmen til USB er formodentligt krypteret, så jeg bliver nødt til at tilgå det fra det kommercielle program.

Det kommercielle program kan sende data real-time (til f.eks. Excel) vha. OLE Automation.

Mit spørgsmål er så; er det muligt at tilgå dette data fra Java?

På forhånd tak,
Jonas



Hej Udviklere.

Jeg sidder med et projekt, hvor et kommercielt program læser noget sensordata.

Dette data skal jeg have overført til mit Java program. Datastrømmen til USB er formodentligt krypteret, så jeg bliver nødt til at tilgå det fra det kommercielle program.

Det kommercielle program kan sende data real-time (til f.eks. Excel) vha. OLE Automation.

Mit spørgsmål er så; er det muligt at tilgå dette data fra Java?

På forhånd tak,
Jonas


Well...nu er Java jo uafhængigt af operativ system, så det kan man ikke umiddelbart.

Men det kan man så alligevel :-)

Du kan bruge JNI (Java Native Interface). Det er et interface til at indlæse en DLL, som implementerer den funktionalitet, du har brug for. Du skal selv skrive koden til denne DLL.

Se mere her:
http://en.wikipedia.org/wiki/Java_Native_Interface

...og her:
http://java.sun.com/docs/books/jni/

Nederst på Wikipedia siden er der nogle gode eksterne links.



Hej Udviklere.

Jeg sidder med et projekt, hvor et kommercielt program læser noget sensordata.

Dette data skal jeg have overført til mit Java program. Datastrømmen til USB er formodentligt krypteret, så jeg bliver nødt til at tilgå det fra det kommercielle program.

Det kommercielle program kan sende data real-time (til f.eks. Excel) vha. OLE Automation.

Mit spørgsmål er så; er det muligt at tilgå dette data fra Java?

På forhånd tak,
Jonas


Well...nu er Java jo uafhængigt af operativ system, så det kan man ikke umiddelbart.

Men det kan man så alligevel :-)

Du kan bruge JNI (Java Native Interface). Det er et interface til at indlæse en DLL, som implementerer den funktionalitet, du har brug for. Du skal selv skrive koden til denne DLL.

Se mere her:
http://en.wikipedia.org/wiki/Java_Native_Interface

...og her:
http://java.sun.com/docs/books/jni/

Nederst på Wikipedia siden er der nogle gode eksterne links.

Hej Robert.

Tak for dit svar!

Jeg er ingen super snu datalog - så jeg skal lige se om jeg forstår metoden.
Det der er muligt er, at jeg skriver en funktionalitet i f.eks. C++, som jeg gemmer som DLL.
Den funktionalitet kan jeg så bruge direkte fra Java?
Det lyder abstrakt i mine øre :)

Mvh,
Jonas




Hej Robert.

Tak for dit svar!

Jeg er ingen super snu datalog - så jeg skal lige se om jeg forstår metoden.
Det der er muligt er, at jeg skriver en funktionalitet i f.eks. C++, som jeg gemmer som DLL.
Den funktionalitet kan jeg så bruge direkte fra Java?
Det lyder abstrakt i mine øre :)

Mvh,
Jonas


Hehe...det forstår jeg godt :-)

Det du gør, er at skrive hele applikationen i Java. Du skal så definere et interface, som kan "snakke sammen" med din DLL.
Jeg kender ikke til OLE, så jeg kan ikke give dig et helt konkret eksempel, men et "Hello World" program kunne se ca. således ud:
Fold kodeboks ind/udKode 


Det compiler du som et normalt Java program:
Fold kodeboks ind/udKode 


Den sidste kommando genererer en C header fil med følgende indhold:
Fold kodeboks ind/udKode 


Du skal så implementere den specificerede funktion i f.eks. C:
Fold kodeboks ind/udKode 


C koden skal så compiles til et library (en DLL), men jeg er Linux bruger, så tag den hellere op i C/C++ foraet. Så er jeg sikker på at Bertel Brander eller en anden på 5 minutter kan vise dig resten.

For god ordens skyld, viser jeg resten, som det ser ud på min Linux box:
Fold kodeboks ind/udKode 


That's it! :-)



Hej Robert.

Så forstår jeg bedre hvad du mener :)

Det virker en anelse besværligt, men det kan velsagtens komme til at fungere. Jeg vil forsøge at finde en som har forstand på OLE Automation, for her rækker min viden heller ikke forfærdelig langt.

Desuden er jeg Mac bruger, så jeg er heller ikke helt hjemme i det.

Tak for dit svar.



t