2016-10-26 5 views
0
public static void main(String[] args) { 

portList = CommPortIdentifier.getPortIdentifiers(); 

    while (portList.hasMoreElements()) { 
     portId = (CommPortIdentifier) portList.nextElement(); 
     if (portId.getPortType() == CommPortIdentifier.PORT_SERIAL) { 
      if (portId.getName().equals("/dev/cu.usbserial-FTCC026H")) { 
       System.out.println("Connecting....."); 
     //    if (portId.getName().equals("/dev/term/a")) { 
       ReadReadings reader = new ReadReadings(); 
      } 
     } 
    } 
} 
public ReadReadings() { 
    try { 
     serialPort = (SerialPort) portId.open("ReadReadings", 1000); 
    } catch (PortInUseException e) {System.out.println(e);} 
    try { 
     inputStream = serialPort.getInputStream(); 
    } catch (IOException e) {System.out.println(e);} 
try { 
     serialPort.addEventListener(this); 
} catch (TooManyListenersException e) {System.out.println(e);} 
    serialPort.notifyOnDataAvailable(true); 
    try { 
     serialPort.setSerialPortParams(9600, 
      SerialPort.DATABITS_8, 
      SerialPort.STOPBITS_1, 
      SerialPort.PARITY_NONE); 
     try { 
      inputStream = serialPort.getInputStream(); 
     } catch (IOException e) { 
      // TODO Auto-generated catch block 
      e.printStackTrace();serialPort.close(); 
     } 
     br = new BufferedReader(new InputStreamReader(inputStream)); 

    } catch (UnsupportedCommOperationException e) {System.out.println(e);} 

    readThread = new Thread(this); 
    readThread.start(); 
} 

public void run() { 
    try { 
     Thread.sleep(10000); 
     if(inputStream != null) 
     { 
      serialPort.close(); 
      try { 
       inputStream.close(); 
      } catch (IOException e) { 
       // TODO Auto-generated catch block 
       e.printStackTrace(); 
      } 
      serialPort.close(); 
      ConnectToHardware.frame.dispose(); 
     frame = new DisplayReadings(); 
     //frame.pack(); 
     frame.setVisible(true); 

     } 

    } catch (InterruptedException e) {System.out.println(e);serialPort.close();} 
} 
public void serialEvent(SerialPortEvent event) { 
    switch(event.getEventType()) { 
    case SerialPortEvent.BI: 
    case SerialPortEvent.OE: 
    case SerialPortEvent.FE: 
    case SerialPortEvent.PE: 
    case SerialPortEvent.CD: 
    case SerialPortEvent.CTS: 
    case SerialPortEvent.DSR: 
    case SerialPortEvent.RI: 
    case SerialPortEvent.OUTPUT_BUFFER_EMPTY: 
     break; 
    case SerialPortEvent.DATA_AVAILABLE: 
     // byte[] readBuffer = new byte[1024]; 
     // String temp = ""; 

     try { 
      String inputLine=br.readLine(); 

      series.put(num, inputLine); 
      num++; 
      System.out.println(inputLine); 

     } 

     catch (IOException e) {System.out.println(e);} 
     break; 
    } 


} 
} 

jarファイルに含まれていない.jnilibファイル私はこれがjarファイルを実行するときに出力を得ない理由だと思う。は、実行可能なjarファイルにlibrxtxSerial.jnilibを取得するにはヘルプこのlibrxtxSerial実行可能なjarファイルを作成するときに、私は3つのクラスが含ま私のプロジェクトの実行可能なjarファイル、外部RXTXライブラリとlibrxtxSerial.jnilib project.Butで作成する必要があり

+0

あなたのコードを表示してください、そうでなければpplは助けません –

+0

私のコードを追加しましたが、私はIDEなしで実行できるようにjarファイルを作成する必要があります。私は日食を使用しています。私はjarファイルをダブルクリックして私のprogram.Thanks.Itsが完全にEclipseで動作しますが、実行可能なjarファイルは動作しません。 – krishna

答えて

0

JNIライブラリは、オペレーティングシステムによってロードされます。したがって、jarファイルから直接ロードすることはできません。これらはファイルシステムからロードされます(詳細はjava.load.pathを参照)。

Javaコードでインストーラを統合しようとすると、ネイティブコードをロードする前にlibをjarファイルからファイルシステムにコピーします。

+0

助けてくれてありがとう。しかし、私は統合の一部をインストーラにするつもりはありません。私はこのプロジェクトを個人として行っているので、インストーラは無料です。プロジェクトのインストーラを購入するためにお金を費やしたくありません。あなたの助けに本当に感謝しています。引数のタブにある私のserialLib(exeファイル)のパス名が問題を解決するもう一つのものを含んでいます。 – krishna

+0

完全なインストーラではありません。私はjniファイルのデータをjarファイルからファイルシステムにコピーするメソッドを意味していました。私は20行未満のコードでこれを行うことができると思います。 – clemens

+0

私はクライアントにjarファイルを提供したいので、そのコードのリンクを私に与えて、コマンドラインでクリックすることなく使用することができます。 – krishna

関連する問題