Avatar billede ng-km Nybegynder
07. oktober 2012 - 15:30 Der er 4 kommentarer og
1 løsning

Stepmotor via dll.

Jeg roder med at få styret en stepmotor fra java. Motoren kører fint med det medleverede software, men jeg vil gerne styre den bedre via mit eget program. Der er leveret en fil, stp.dll, med, så jeg burde kunne få det til at fungere ved at kalde dll filen fra java, men jeg har ikke før arbejdet med JNI, så derfor skal jeg lige have lidt hjælp til at få gang i motoren.

Headerfilen til stp.dll ser således ud.
/ Header file for use with stp.dll

typedef int        (*Type_InitStp)();
typedef bool    (*Type_RunMotor1)(int steps, int interval, int direction, int outputs);
typedef bool    (*Type_StopMotor1)(int outputs);
typedef bool    (*Type_RunMotor2)(int steps, int interval, int direction, int outputs);
typedef bool    (*Type_StopMotor2)(int outputs);
typedef bool    (*Type_SetStepMode)(int M1Mode, int M2Mode);
typedef bool    (*Type_GetCurrentStatus)(int *M1Active, int *M2Active, int *M1Steps, int *M2Steps,  int *Inputs);

Har forsøgt at loade stp.dll via:
System.loadLibrary("stp.dll");

Men det giver denne exception:
Exception in thread "AWT-EventQueue-0" java.lang.UnsatisfiedLinkError: no stp.dll in java.library.path
        at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1709)
        at java.lang.Runtime.loadLibrary0(Runtime.java:823)
    .....



Hvad skal jeg gøre for at få motoren styret via mit eget java program?
Avatar billede arne_v Ekspert
07. oktober 2012 - 15:42 #1
I JNI er det Java siden som "bestemmer".

Du kan ikke kalde en vilkaarlig DLL via JNI - du kan kun kalde en DLL specielt lavet til formaalet.

Saa du skal lave:

din Java app----(JNI)---->din egen wrapper DLL---->3. parts DLL
Avatar billede arne_v Ekspert
07. oktober 2012 - 15:44 #2
Alternativt kan du proeve at installere JNA og saa bruge:

din Java app----(Java call)---->JNA library----(JNI)---->JNA DLL---->3. parts DLL
Avatar billede ng-km Nybegynder
08. oktober 2012 - 19:55 #3
Tak for hjælpen. Fik det til at køre via JNA. Hvis jeg skulle lave en wrapperløsning, ville det så ikke kræve at jeg lavede den i C++, og er det svært?

Læg et svar til dine point.
Avatar billede arne_v Ekspert
08. oktober 2012 - 20:22 #4
Hvis du selv skulle lave en JNI wrapper ville du skulle bruge C eller C++.

Hvis ikke du kender dem i forvejen, saa vil det nok vaere meget svaert.
Avatar billede arne_v Ekspert
08. oktober 2012 - 20:22 #5
og et svar
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester