Java-bindning
Moderator: Telldus
Java-bindning
Okej, vi byter tråd
Finns det någon guide som beskriver hur jag installerar java-bindningar? Är bindningarna beroende av telldus-core?
Jag laddade ner http://developer.telldus.se/browser/tru ... ings/java/
Men nu vet jag inte riktigt hur jag går tillväga för att kompilera bindningarna (OS X)?
Finns det någon guide som beskriver hur jag installerar java-bindningar? Är bindningarna beroende av telldus-core?
Jag laddade ner http://developer.telldus.se/browser/tru ... ings/java/
Men nu vet jag inte riktigt hur jag går tillväga för att kompilera bindningarna (OS X)?
Last edited by gein on Sat Feb 13, 2010 2:59 pm, edited 1 time in total.
Re: Java-bindning
Ett annat alternativ är att använda sig av JNA:gein wrote:Finns det något guide som beskriver hur jag installerar java-bindningar? Är bindningarna beroende av telldus-core?
Jag laddade ner http://developer.telldus.se/browser/tru ... ings/java/
Men nu vet jag inte riktigt hur jag gör tillväga för att kompilera bindningarna (OS X)?
http://www.telldus.se/forum/viewtopic.php?p=1147#1147JNA has been built and tested on OSX (ppc, x86, x86_64), linux (x86, amd64), FreeBSD/OpenBSD (x86, amd64), Solaris (x86, amd64, sparc, sparcv9) and Windows (x86, amd64). It has also been built for windows/mobile and Linux/ppc64, although those platforms are not included in the distribution. The ant build script's test target will build and run the test suite, which has decent coverage and is a quick way to determine if your environment is set up correctly.
En sak som jag själv undrar är om TelldusCore.dll som jag använder mig av i windows fortfarande heter så i OSX och linux eller om den har ett annat namn
/Henrik
-
- Site Admin
- Posts: 2243
- Joined: Fri Mar 17, 2023 9:45 am
- Location: Lund
- Contact:
-
- Site Admin
- Posts: 2243
- Joined: Fri Mar 17, 2023 9:45 am
- Location: Lund
- Contact:
Alright, tack! TelldusCore.framework, finns den färdigkompilerad att hämta hem? Om ja, vart hittar jag den?micke.prag wrote:Windows: TelldusCore.dll
Linux: libtelldus-core.so.2
OS X: TelldusCore.framework
Innuti dessa är det precis samma funktioner som exporteras. Hur det länkas (om man gör det vid kompileringstillfället) skilljer sig lite åt från plattform till plattform.
-
- Site Admin
- Posts: 2243
- Joined: Fri Mar 17, 2023 9:45 am
- Location: Lund
- Contact:
Okej, då kvarstår dock frågan hur sjutton man får bindningen att kompilera.micke.prag wrote:Den installerar sig i /Library/Frameworks när du installerar TelldusCenter
Laddar jag hem TellUsbD101.h och refererar till den så får jag istället felet:tellstick.c:4:25: error: TellUsbD101.h: No such file or directory
$ gcc -I/System/Library/Frameworks/JavaVM.framework/Versions/1.6/Headers/ -I./ tellstick.c In file included from tellstick.c:4:
./TellUsbD101.h:24: error: expected identifier or ‘(’ before string constant
tellstick.c: In function ‘Java_tellstick_devTurnOn’:
tellstick.c:7: error: parameter name omitted
tellstick.c:7: error: parameter name omitted
tellstick.c: In function ‘Java_tellstick_devTurnOff’:
tellstick.c:14: error: parameter name omitted
tellstick.c:14: error: parameter name omitted
tellstick.c: In function ‘Java_tellstick_devBell’:
tellstick.c:21: error: parameter name omitted
tellstick.c:21: error: parameter name omitted
tellstick.c: In function ‘Java_tellstick_devDim’:
tellstick.c:28: error: parameter name omitted
tellstick.c:28: error: parameter name omitted
tellstick.c: In function ‘Java_tellstick_devMethods’:
tellstick.c:35: error: parameter name omitted
tellstick.c:35: error: parameter name omitted
tellstick.c: In function ‘Java_tellstick_devGetNumberOfDevices’:
tellstick.c:42: error: parameter name omitted
tellstick.c:42: error: parameter name omitted
tellstick.c: In function ‘Java_tellstick_devGetDeviceId’:
tellstick.c:49: error: parameter name omitted
tellstick.c:49: error: parameter name omitted
tellstick.c: In function ‘Java_tellstick_devGetName’:
tellstick.c:56: error: parameter name omitted
tellstick.c:58: warning: initialization makes pointer from integer without a cast
tellstick.c:59: error: request for member ‘NewStringUTF’ in something not a structure or union
-
- Site Admin
- Posts: 2243
- Joined: Fri Mar 17, 2023 9:45 am
- Location: Lund
- Contact:
Ahh, verkar som dom bindningarna är skrivna mot version 1.x.
Dom måste uppgraderas att använda 2.0 med telldus-core.h iställer för TellUsbD101.h
De flesta funktionerna är snarlika fast med prefixet "td" istället för "dev".
När du länkar med gcc mot telldus-core görs det med -ltelldus-core i Linux men -framework TelldusCore under Mac OS X.
framework-växeln är trevlig då den även ger include-mappen till telldus-core.h har jag för mig.
Dom måste uppgraderas att använda 2.0 med telldus-core.h iställer för TellUsbD101.h
De flesta funktionerna är snarlika fast med prefixet "td" istället för "dev".
När du länkar med gcc mot telldus-core görs det med -ltelldus-core i Linux men -framework TelldusCore under Mac OS X.
framework-växeln är trevlig då den även ger include-mappen till telldus-core.h har jag för mig.
Micke Prag
Software
Telldus Technologies
Software
Telldus Technologies
Vi börjar kanske närma oss. Den där -framework flaggan blev jag inte klok på men lyckades till slut lista ut att man kan skrivamicke.prag wrote:Ahh, verkar som dom bindningarna är skrivna mot version 1.x.
Dom måste uppgraderas att använda 2.0 med telldus-core.h iställer för TellUsbD101.h
De flesta funktionerna är snarlika fast med prefixet "td" istället för "dev".
När du länkar med gcc mot telldus-core görs det med -ltelldus-core i Linux men -framework TelldusCore under Mac OS X.
framework-växeln är trevlig då den även ger include-mappen till telldus-core.h har jag för mig.
i tellstick.c samt#include <TelldusCore/telldus-core.h>
i tellstick.h så gick den direkt till de båda ramverken och hämtade header-filerna.#include <JavaVM/jni.h>
Jag lyckades dock inte fixa tellstick.c så att den matchar 2.0. Följande fel får jag:
Här är en liten snippet ur den modifierad tellstick.c:$ gcc tellstick.c
tellstick.c: In function ‘Java_tellstick_tdTurnOn’:
tellstick.c:7: error: parameter name omitted
tellstick.c:7: error: parameter name omitted
tellstick.c: In function ‘Java_tellstick_tdTurnOff’:
tellstick.c:14: error: parameter name omitted
tellstick.c:14: error: parameter name omitted
tellstick.c: In function ‘Java_tellstick_tdBell’:
tellstick.c:21: error: parameter name omitted
tellstick.c:21: error: parameter name omitted
tellstick.c: In function ‘Java_tellstick_tdDim’:
tellstick.c:28: error: parameter name omitted
tellstick.c:28: error: parameter name omitted
tellstick.c: In function ‘Java_tellstick_tdMethods’:
tellstick.c:35: error: parameter name omitted
tellstick.c:35: error: parameter name omitted
tellstick.c:37: error: too few arguments to function ‘tdMethods’
tellstick.c: In function ‘Java_tellstick_tdGetNumberOftdices’:
tellstick.c:42: error: parameter name omitted
tellstick.c:42: error: parameter name omitted
tellstick.c: In function ‘Java_tellstick_tdGettdiceId’:
tellstick.c:49: error: parameter name omitted
tellstick.c:49: error: parameter name omitted
tellstick.c: In function ‘Java_tellstick_tdGetName’:
tellstick.c:56: error: parameter name omitted
tellstick.c:59: error: request for member ‘NewStringUTF’ in something not a structure or union
Code: Select all
JNIEXPORT jboolean JNICALL
Java_tellstick_tdTurnOn(JNIEnv *, jobject, jint inttdiceId)
{
return (jboolean) tdTurnOn( (int)inttdiceId);
}
Nu är det nära. Jag har moddat tellstick.c men har ett fel kvar som jag inte riktigt vet hur jag ska lösa ännu:
$ gcc tellstick.c
tellstick.c: In function ‘Java_tellstick_tdGetName’:
tellstick.c:59: error: request for member ‘NewStringUTF’ in something not a structure or union
Code: Select all
JNIEXPORT jstring JNICALL
Java_tellstick_tdGetName(JNIEnv *env, jobject obj, jint inttdiceId)
{
const char *name = tdGetName( (int)inttdiceId );
return env->NewStringUTF(name);
}
Mera framsteg. Nu kompilerar det men jag får länk fel:
$ gcc -arch i386 -framework TelldusCore tellstick.c
Undefined symbols:
"_main", referenced from:
start in crt1.10.6.o
"_tdGettdiceId", referenced from:
_Java_tellstick_tdGettdiceId in ccGIbDf2.o
"_tdGetNumberOftdices", referenced from:
_Java_tellstick_tdGetNumberOftdices in ccGIbDf2.o
ld: symbol(s) not found
collect2: ld returned 1 exit status
-
- Site Admin
- Posts: 2243
- Joined: Fri Mar 17, 2023 9:45 am
- Location: Lund
- Contact:
Detta gör det tyvärr plattforms-beroende då det inte kommer kompilera i Linux eller Windows. Ett bättre sätt är att skicka det som -I till gcc. Men det är småsaker...Vi börjar kanske närma oss. Den där -framework flaggan blev jag inte klok på men lyckades till slut lista ut att man kan skriva
Citat:
#include <TelldusCore/telldus-core.h>
Det sista felet är troligtvis för att gcc vill kompilera koden som ett program och behöver då en main-funktion. Det finns en flagga som säger till gcc att kompilera det som ett bibliotek istället. Har tyvärr inte möjlighet att kolla upp hur där jag befinner mig nu.
Micke Prag
Software
Telldus Technologies
Software
Telldus Technologies
Helt riktigt!micke.prag wrote:Detta gör det tyvärr plattforms-beroende då det inte kommer kompilera i Linux eller Windows. Ett bättre sätt är att skicka det som -I till gcc. Men det är småsaker...Vi börjar kanske närma oss. Den där -framework flaggan blev jag inte klok på men lyckades till slut lista ut att man kan skriva
Citat:
#include <TelldusCore/telldus-core.h>
Det sista felet är troligtvis för att gcc vill kompilera koden som ett program och behöver då en main-funktion. Det finns en flagga som säger till gcc att kompilera det som ett bibliotek istället. Har tyvärr inte möjlighet att kolla upp hur där jag befinner mig nu.
$ gcc -arch i386 -framework TelldusCore -dynamiclib tellstick.c -o tellstick.dylib
MacbookV2:java patrikjansson$ ls -alF
total 48
drwxr-xr-x 6 patrikjansson staff 204 13 Feb 17:30 ./
drwxr-xr-x 9 patrikjansson staff 306 13 Feb 11:14 ../
-rw-r--r--@ 1 patrikjansson staff 1379 13 Feb 17:22 tellstick.c
-rwxr-xr-x 1 patrikjansson staff 9180 13 Feb 17:30 tellstick.dylib*
-rw-r--r--@ 1 patrikjansson staff 1524 13 Feb 16:42 tellstick.h
-rw-r--r--@ 1 patrikjansson staff 676 13 Feb 11:15 tellstick.java
Tack för hjälpen! Nu återstår bara att se hur den här verkligen fungerar. Sen ser jag ju också att telldus-core.h innehåller en hel del funktioner som inte min JNI-bindning använder sig av. Men den är väl lite föråldrad helt enkelt?
-
- Site Admin
- Posts: 2243
- Joined: Fri Mar 17, 2023 9:45 am
- Location: Lund
- Contact:
Ja, föråldrad är den och sedan finns det funktioner som inte är intressanta i "vanliga" applikationer utan endast används av TelldusCenter för att konfigurera enheter.
Om du får igång denna wrapper får du gärna skicka dina ändringar till oss så att fler kan dra nytta av dom. Jag tror att funktionerna som returnerar strängar (t.ex. tdGetName()) kan behövas fixas på ett annorlunda vis för att inte läcka minne med. Det kan jag kolla på sedan.
Om du får igång denna wrapper får du gärna skicka dina ändringar till oss så att fler kan dra nytta av dom. Jag tror att funktionerna som returnerar strängar (t.ex. tdGetName()) kan behövas fixas på ett annorlunda vis för att inte läcka minne med. Det kan jag kolla på sedan.
Micke Prag
Software
Telldus Technologies
Software
Telldus Technologies