Я хочу провести небольшой тест с устройством USB nanoCUL868, чтобы передать некоторый сигнал на удаленные устройства.Флешка работает с некоторым сторонним программным обеспечением, и я смог связаться с удаленным устройством.Теперь я хочу протестировать эту флешку с помощью следующего кода в JAVA:
package de.saltest.home;
import java.io.IOException;
import java.io.OutputStream;
import java.util.logging.Logger;
import org.openmuc.jrxtx.Parity;
import org.openmuc.jrxtx.SerialPort;
import org.openmuc.jrxtx.SerialPortBuilder;
public class SomfyCULTest {
private static final Logger log = Logger.getLogger(SomfyCULTest.class.getName());
public static void main(String[] args) throws IOException {
log.info("Opening port ttyUSB0");
SerialPort port = SerialPortBuilder.newBuilder("/dev/ttyAMA0").setBaudRate(9600).setParity(Parity.NONE).build();
OutputStream out = port.getOutputStream();
String commandLEDOn = "l01\n";
String commandLEDOff = "l00\n";
String encryptionKey = "A1";
// C - Command (1 = My, 2 = Up, 4 = Down, 8 = Prog)
String command = "2";
String rollingCode = "001D";
String address = "000029";
String somfyCommand = "Ys" + encryptionKey + command + "0" + rollingCode + address + "\n";
out.write(somfyCommand.getBytes());
out.close();
port.close();
log.info("Closed port");
}
}
Я установил Oracle Java на Rasperry Pi 3, а также получил librtrx-java через apt-get.A dpkg-query -L librxtx-java
дает:
/usr/lib/jni/librxtxRS485.so
/usr/lib/jni/librxtxRaw.so
/usr/lib/jni/librxtxI2C.so
/usr/lib/jni/librxtxParallel.so
/usr/lib/jni/librxtxSerial.so
/usr/share/java/RXTXcomm.jar
Итак, я предполагаю, что эти библиотеки правильно установлены для правильной платформы.Если я использую javac для компиляции своего кода:
, я получаю следующее сообщение об ошибке:
javac -classpath /usr/lib/jni -cp /usr/share/java/RXTXcomm.jar:. src/main/java/de/saltest/home/SomfyCULTest.java
src/main/java/de/saltest/home/SomfyCULTest.java:7: error: package org.openmuc.jrxtx does not exist
import org.openmuc.jrxtx.Parity;
^
У меня также есть проект maven, который прекрасно компилируется с использованием этого кода, однако я не могу его выполнитьиз-за следующей ошибки:
mvn exec:java -Dexec.mainClass=de.saltest.home.SomfyCULTest
[INFO] --- exec-maven-plugin:1.6.0:java (default-cli) @ serialTest ---
Okt 07, 2018 3:25:41 PM de.saltest.home.SomfyCULTest main
INFORMATION: Opening port ttyUSB0
Could not load lib from jar and from system.
gnu.io.LibLoadException: directory does not exist /libs
at gnu.io.LibraryLoader.loadLib(LibraryLoader.java:65)
at gnu.io.LibraryLoader.loadLibsFromJar(LibraryLoader.java:48)
at gnu.io.LibraryLoader.loadRxtxNative(LibraryLoader.java:29)
at gnu.io.RXTXCommDriver.<clinit>(RXTXCommDriver.java:85)
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Class.java:264)
at gnu.io.CommPortIdentifier.<clinit>(CommPortIdentifier.java:104)
at org.openmuc.jrxtx.JRxTxPort.openSerialPort(JRxTxPort.java:50)
at org.openmuc.jrxtx.SerialPortBuilder.build(SerialPortBuilder.java:166)
at de.saltest.home.SomfyCULTest.main(SomfyCULTest.java:24)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at org.codehaus.mojo.exec.ExecJavaMojo$1.run(ExecJavaMojo.java:282)
at java.lang.Thread.run(Thread.java:748)
java.lang.UnsatisfiedLinkError: no rxtxSerial in java.library.path thrown while loading gnu.io.RXTXCommDriver
Отсюда я потерялся.Я пробовал много вещей, таких как копирование библиотек в разные места, как предложено в некоторых других публикациях.Я также изменил путь к классам и многое другое, о чем мог подумать.Тем не менее, кажется, ничего не работает.Единственное, что я нахожу странным, это то, что я пытаюсь использовать java.io.но код пытается загрузить gnu.io.Может быть, есть какое-то несоответствие?Любая помощь или решение действительно приветствуется.
Спасибо!