2017-09-02 8 views
1

私はJavaアプリケーションのComポートの助けを借りて転送データを実装しようとしています。まず、このようなSerialPortオブジェクトを作成することにしました。comポートがjSSCで検出されない

SerialPort serialPort = new SerialPort("COM1"); 

try { 
     serialPort.openPort(); 
} catch (SerialPortException ex) { 
     ex.printStackTrace(); 
} 

しかし、jssc.SerialPortExceptionがありました。ポート名 - COM1。メソッド名 - openPort();例外タイプ - ポートが見つかりません。

は、それから私は、決定するために、私は何のCOMポートを持っていますか試してみました:

String[] portNames = SerialPortList.getPortNames(); 
    for (int i = 0; i < portNames.length; i++) { 
     System.out.println(portNames[i]); 
    } 

結果は嘆かわしいた:PORTNAMESは空でした。

私に何かアドバイスをお願いしますか?

答えて

0

私はWindowsでこのコードをチェックして、それは結構です。 私のUSB-に-COMアダプタがシステム

import jssc.SerialPort; 
import jssc.SerialPortException; 
import jssc.SerialPortList; 

public class Main { 
    public static void main(String[] args) { 
     SerialPort serialPort; 
     serialPort = new SerialPort("COM4"); 

     try { 
      serialPort.openPort(); 
     } catch (SerialPortException ex) { 
      ex.printStackTrace(); 
     } 

     String[] portNames = SerialPortList.getPortNames(); 
     for (int i = 0; i < portNames.length; i++) { 
      System.out.println(portNames[i]); 
     } 
    } 
} 

にCOM4になりました。また、私は、COMポートを確認するには、デバイスマネージャにアクセスしてください。したがって、topic starterの "portNames"が空であった場合も同様です。おそらくデバイスドライバで何か。彼はそこをチェックしなければならない。

+0

です。これは質問に対する答えを提供しません。十分な[評判](https://stackoverflow.com/help/whats-reputation)があれば、[投稿にコメントする]ことができます(https://stackoverflow.com/help/privileges/comment)。代わりに、[質問者からの明確化を必要としない回答を提供する](https://meta.stackexchange.com/questions/214173/why-do-i-need-50-reputation-to-comment-what-c​​an- i-do-代わりに)。 - [レビューの投稿](レビュー/低品質の投稿/ 17957314) – jotik

0

これを処理する方法はさまざまです。

  1. アプリケーションが開始されると、見つかったときにのみポートを開くよりも、使用可能なCOMポートを見つけるためにループオーバーします。また、Windowsが使用するCOMポートを検出してアクティブにするのに時間がかかるので、遅延を追加することもできます。 WindowsはUSB-UARTをプラグインするときにドライバをロードし、COMポート番号を割り当てます。つまり、COM4を取得するたびに、同じ物理ポートに同じモジュールを挿入した場合です。だから心配はありません。
  2. より堅牢なソリューションを作成する場合は、独自の書き込みを行い、USB-UARTホットプラグ検出を提供するライブラリを使用してください。したがって、USB-UARTモジュールを挿入すると、このライブラリは割り当てられているポート番号を教えてくれて、アプリケーションからそれを開きます。私が知っているそのようなライブラリの1つはSerialPundit
関連する問題