Java-bindning

Moderator: Telldus

gein
Posts: 437
Joined: Fri Mar 17, 2023 9:45 am

Post by gein »

micke.prag wrote: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.
Självklart! Efter att jag har testat lite så skickar jag över det jag har.
Tack för all hjälp!
gein
Posts: 437
Joined: Fri Mar 17, 2023 9:45 am

Post by gein »

Jag har dock fortsatta problem med 64- vs 32-bitars.

När Java ska ladda biblioteket:
Exception in thread "main" java.lang.UnsatisfiedLinkError: /Users/patrikjansson/Downloads/telldus/java/libtellstick.dylib: no suitable image found. Did find: /Users/patrikjansson/Downloads/telldus/java/libtellstick.dylib: mach-o, but wrong architecture
Och jag var tvungen att kompilera tellstick.c med "-arch i386" för att det skulle länka mot TelldusCore. Utan detta fick jag felet:
ld: warning: in /Library/Frameworks//TelldusCore.framework/TelldusCore, file is not of required architecture
Går det att få tag i en 64-bitars TelldusCore eller är jag tvungen att försöka kompilera på egen hand?
micke.prag
Site Admin
Posts: 2243
Joined: Fri Mar 17, 2023 9:45 am
Location: Lund
Contact:

Post by micke.prag »

Tyvärr måste du kompilera själv. Maskinen som kompilerar detta kör 10.5 än så länge.

TelldusCore bör dock inte vara några problem att installera. Kör detta paketet:
http://download.telldus.se/TellStick/So ... 0.2.tar.gz

Tänk dock på att det vill bygga mot libftdi så du behöver 64-bitars-versionen av det.
Micke Prag
Software
Telldus Technologies
gein
Posts: 437
Joined: Fri Mar 17, 2023 9:45 am

Post by gein »

micke.prag wrote:Tyvärr måste du kompilera själv. Maskinen som kompilerar detta kör 10.5 än så länge.

TelldusCore bör dock inte vara några problem att installera. Kör detta paketet:
http://download.telldus.se/TellStick/So ... 0.2.tar.gz

Tänk dock på att det vill bygga mot libftdi så du behöver 64-bitars-versionen av det.
Då får ni skaffa Snow Leopard! ;)

Nåväl, jag ger mig på en egen kompilering igen men går direkt bet vid "make".
MacbookV2:telldus-core-2.0.2 patrikjansson$ cmake -DBUILD_RFCMD=0 .
-- Configuring done
-- Generating done
-- Build files have been written to: /Users/patrikjansson/Downloads/telldus/telldus-core-2.0.2
MacbookV2:telldus-core-2.0.2 patrikjansson$ make
Scanning dependencies of target TelldusCore
[ 5%] Building CXX object driver/libtelldus-core/CMakeFiles/TelldusCore.dir/Device.cpp.o
[ 10%] Building CXX object driver/libtelldus-core/CMakeFiles/TelldusCore.dir/DeviceBrateck.cpp.o
[ 15%] Building CXX object driver/libtelldus-core/CMakeFiles/TelldusCore.dir/DeviceEverflourish.cpp.o
[ 21%] Building CXX object driver/libtelldus-core/CMakeFiles/TelldusCore.dir/DeviceGroup.cpp.o
[ 26%] Building CXX object driver/libtelldus-core/CMakeFiles/TelldusCore.dir/DeviceIkea.cpp.o
[ 31%] Building CXX object driver/libtelldus-core/CMakeFiles/TelldusCore.dir/DeviceNexa.cpp.o
[ 36%] Building CXX object driver/libtelldus-core/CMakeFiles/TelldusCore.dir/DeviceRisingSun.cpp.o
[ 42%] Building CXX object driver/libtelldus-core/CMakeFiles/TelldusCore.dir/DeviceSartano.cpp.o
[ 47%] Building CXX object driver/libtelldus-core/CMakeFiles/TelldusCore.dir/DeviceUndefined.cpp.o
[ 52%] Building CXX object driver/libtelldus-core/CMakeFiles/TelldusCore.dir/DeviceUpm.cpp.o
[ 57%] Building CXX object driver/libtelldus-core/CMakeFiles/TelldusCore.dir/DeviceWaveman.cpp.o
[ 63%] Building CXX object driver/libtelldus-core/CMakeFiles/TelldusCore.dir/DeviceX10.cpp.o
[ 68%] Building CXX object driver/libtelldus-core/CMakeFiles/TelldusCore.dir/Controller.cpp.o
[ 73%] Building CXX object driver/libtelldus-core/CMakeFiles/TelldusCore.dir/Manager.cpp.o
[ 78%] Building CXX object driver/libtelldus-core/CMakeFiles/TelldusCore.dir/Settings.cpp.o
[ 84%] Building CXX object driver/libtelldus-core/CMakeFiles/TelldusCore.dir/telldus-core.cpp.o
[ 89%] Building CXX object driver/libtelldus-core/CMakeFiles/TelldusCore.dir/SettingsCoreFoundationPreferences.cpp.o
[ 94%] Building CXX object driver/libtelldus-core/CMakeFiles/TelldusCore.dir/win/Device.cpp.o
Linking CXX shared library TelldusCore.framework/Versions/2.0.2/TelldusCore
Undefined symbols:
"_FT_Write", referenced from:
TelldusCore::Device::send(std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)in Device.cpp.o
"_FT_CreateDeviceInfoList", referenced from:
getDongleIndex() in Device.cpp.o
"_FT_Open", referenced from:
getDongleIndex() in Device.cpp.o
TelldusCore::Device::send(std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)in Device.cpp.o
"_FT_Read", referenced from:
TelldusCore::Device::send(std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)in Device.cpp.o
"_FT_SetTimeouts", referenced from:
TelldusCore::Device::send(std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)in Device.cpp.o
"_FT_SetVIDPID", referenced from:
getDongleIndex() in Device.cpp.o
"_FT_EE_Read", referenced from:
getDongleIndex() in Device.cpp.o
"_FT_Close", referenced from:
getDongleIndex() in Device.cpp.o
getDongleIndex() in Device.cpp.o
TelldusCore::Device::send(std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)in Device.cpp.o
"_FT_SetBaudRate", referenced from:
TelldusCore::Device::send(std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)in Device.cpp.o
ld: symbol(s) not found
collect2: ld returned 1 exit status
make[2]: *** [driver/libtelldus-core/TelldusCore.framework/Versions/2.0.2/TelldusCore] Error 1
make[1]: *** [driver/libtelldus-core/CMakeFiles/TelldusCore.dir/all] Error 2
make: *** [all] Error 2
Återigen något länk fel, finns det några förslag? CFLAGS och LDFLAGS är tom.

Hmm det är väl något libftdi-problem misstänker jag.
micke.prag
Site Admin
Posts: 2243
Joined: Fri Mar 17, 2023 9:45 am
Location: Lund
Contact:

Post by micke.prag »

Den hittar inte libftdi. Kör ccmake så kan du ställa in en absolut sökväg till libftd2xx.dylib under FTD2XX_LIBRARY.

Ahh förresten. Släng även på SUPPORT_USB=1 om den inte är satt.
Micke Prag
Software
Telldus Technologies
gein
Posts: 437
Joined: Fri Mar 17, 2023 9:45 am

Post by gein »

Du får ursäkta men jag har aldrig använt cmake förut så jag känner mig en aning förvirrad.

Så här har jag gjort.
1) Packat upp telldus-core.
2) Kör ccmake -DBUILD_RFCMD=0 -DSUPPORT_USB=1 .
3) Trycker på c (för configure)

Nu får jag felet:
CMake Error: The following variables are used in this project, but they are set to NOTFOUND.
Please set them or make sure they are set and tested correctly in the CMake files:
FTD2XX_LIBRARY
linked by target "TelldusCore" in directory /Users/patrikjansson/Downloads/telldus/telldus-core-2.0.2/driver/libtelldus-core
Men jag vet inte vad jag ska skriva i FTD2XX_LIBRARY. Jag har laddat hem och installerat 2.2.14 av FTDI för OS X. Jag packade upp det paketet som gällde för 10.4, 10.5 och 10.6 av OS X (det var samma paket för alla dessa versioner). Enligt en manual jag hittade på samma hemsida så verkar saker och ting installeras under /System/Library/Extensions/FTDIUSBSerialDriver.kext (och mycket riktigt, den katalogen finns) men ingen libftd2xx.dylib däri.
Jag behöver nog lite guidning till vad jag egentligen ska skriva i FTD2XX_LIBRARY för jag hittar ingen libftd2xx.dylib på mitt system över huvud taget.
gein
Posts: 437
Joined: Fri Mar 17, 2023 9:45 am

Post by gein »

Äh, jag inser ju att jag har dragit ner fel grejer från deras hemsida.
gein
Posts: 437
Joined: Fri Mar 17, 2023 9:45 am

Post by gein »

Sådär, lyckades till slut kompilera telldus-core. Kompilerade om 64-bitars JNI-bindningar och testkör men får då istället felet:
Exception in thread "main" java.lang.UnsatisfiedLinkError: JNITest.tdTurnOn(I)Z
at JNITest.tdTurnOn(Native Method)
at JNITest.main(JNITest.java:24)
Jag är inte helt säker på vad det här beror på...?
micke.prag
Site Admin
Posts: 2243
Joined: Fri Mar 17, 2023 9:45 am
Location: Lund
Contact:

Post by micke.prag »

Ser ut som något inte har länkats rätt.

Tyvärr vet jag inte hur mycket mer jag kan hjälpa till. Det börjar luta mer och mer om java-grejer som jag inte är så bra på.
Micke Prag
Software
Telldus Technologies
gein
Posts: 437
Joined: Fri Mar 17, 2023 9:45 am

Post by gein »

Jag har gett upp JNI-bindningen eftersom jag istället fått JNA-bindningen att fungera.
Post Reply