私はArduino Unoにデータを書き込もうとしています。ArduinoからシリアルCOMを使用してJavaでデータを書き込み、読み込みます。
私は、Windows 8.1上でNetBeansを使用しており、そのためには "RXTXcomm.jar"というライブラリを使用しています。
私のコードはこれです、私のArduinoはCOM3であり、そしてそれはライン25と80のエラーがスローされます。
ERROR
java.lang.UnsatisfiedLinkError: no rxtxSerial in java.library.path thrown while loading gnu.io.RXTXCommDriver Exception in thread "main" java.lang.UnsatisfiedLinkError: no rxtxSerial in java.library.path
at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1867)
at java.lang.Runtime.loadLibrary0(Runtime.java:870)
at 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");
}
}
皆さん、お答えしますようお願い致します。