2017-02-24 12 views
1

私は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"); 
    } 
} 

皆さん、お答えしますようお願い致します。

答えて

1
私は問題を解決し

.....

私も「rxtxSerial.dll」と呼ばれる「DLL」ファイルに「RXTXcomm.jar」ライブラリ話をしなければなりません。 しかし、私は 'dll'ファイルを追加した後、私は別のエラーを持っていましたが、今度は 'dll'ファイル自体から問題が発生しました。多くの研究の後、完全な 'dll'ファイル(http://jlog.org/rxtx-win.html )とチュートリアル(https://www.youtube.com/watch?v=43Vdpz1YmdU)とそれは:)を働いた。

誰かが私の経験を役立ててくれることを願っています。

関連する問題