我试图将数据写入我的Arduino Uno并从中收到日期。
我在Windows 8.1和库" RXTXcomm.jar"上使用NetBeans。为了做到这一点。
我的代码是这样的,我的Arduino在COM3上,它在第25行和第80行引发错误:
错误
java.lang.UnsatisfiedLinkError:加载gnu.io.RXTXCommDriver时抛出的java.library.path中没有rxtxSerial 线程" main"中的例外情况java.lang.UnsatisfiedLinkError:java.library.path中没有rxtxSerial
在java.lang.ClassLoader.loadLibrary(ClassLoader.java:1867)
在java.lang.Runtime.loadLibrary0(Runtime.java:870)
在java.lang.System.loadLibrary(System.java:1122)
at gnu.io.CommPortIdentifier。(CommPortIdentifier.java:83)
at arduino.test.pkg3.ArduinoTest3.initialize(ArduinoTest3.java:25)
at arduino.test.pkg3.ArduinoTest3.main(ArduinoTest3.java:80)
守则:
01: package arduino.test.pkg3;
02:
03: import java.io.BufferedReader;
04: import java.io.InputStreamReader;
05: import java.io.OutputStream;
06: import gnu.io.CommPortIdentifier;
07: import gnu.io.SerialPort;
08: import gnu.io.SerialPortEvent;
09: import gnu.io.SerialPortEventListener;
10: import java.util.Enumeration;
11:
12: public class ArduinoTest3 implements SerialPortEventListener {
13:
14: SerialPort serialPort;
15: private static final String PORT_NAMES[] = {"COM3"};
16: private BufferedReader input;
17: private OutputStream output;
18: private static final int TIME_OUT = 2000;
19: private static final int DATA_RATE = 9600;
20:
21: public void initialize(){
22: System.setProperty("gnu.io.rxtx.SerialPorts", "COM3");
23:
24: CommPortIdentifier portId = null;
25: Enumeration portEnum = CommPortIdentifier.getPortIdentifiers();
while(portEnum.hasMoreElements()){
CommPortIdentifier currPortId = (CommPortIdentifier) portEnum.nextElement();
for(String portName : PORT_NAMES){
if(currPortId.getName().equals(portName)){
portId = currPortId;
break;
}
}
}
if(portId == null){
System.out.println("Could not find COM port.");
return;
}
try{
serialPort = (SerialPort) portId.open(this.getClass().getName(), TIME_OUT);
serialPort.setSerialPortParams(DATA_RATE,
SerialPort.DATABITS_8,
SerialPort.STOPBITS_1,
SerialPort.PARITY_NONE);
input = new BufferedReader(new InputStreamReader(serialPort.getInputStream()));
output = serialPort.getOutputStream();
serialPort.addEventListener(this);
serialPort.notifyOnDataAvailable(true);
}catch(Exception e){
System.err.println(e.toString());
}
}
public synchronized void close(){
if(serialPort != null){
serialPort.removeEventListener();
serialPort.close();
}
}
public synchronized void serialEvent(SerialPortEvent oEvent){
if(oEvent.getEventType() == SerialPortEvent.DATA_AVAILABLE){
try{
String inputLine=input.readLine();
System.out.println(inputLine);
}catch (Exception e){
System.err.println(e.toString());
}
}
}
public static void main(String[] args) throws Exception{
ArduinoTest3 main = new ArduinoTest3();
80 : main.initialize();
Thread t=new Thread(){
public void run(){
try{Thread.sleep(1000000);}catch(InterruptedException ie) {}
}
};
t.start();
System.out.println("Started");
}
}
希望你们找到答案:)
答案 0 :(得分:1)
我解决了这个问题......
我还应该制作' RXTXcomm.jar '图书馆与一个' dll'文件名为' rxtxSerial.dll '。 但是在我添加了' dll'文件,我有一个不同的错误,但这次问题来自' dll'归档自己,所以经过大量的研究,我找到了完整的“dll'文件(http://jlog.org/rxtx-win.html)和教程(https://www.youtube.com/watch?v=43Vdpz1YmdU)并且它有效 :)。
希望有人能发现我的经验有用。