2011-03-09 3 views
0

Javaを使用してシリアルポートと通信するプロジェクトに取り組んでいます。次のコードをテストするためにデバイスをシリアルポートに接続する必要がありますか?Linuxプラットフォーム用のシリアルポートにアクセスする

Enumeration ports = CommPortIdentifier.getPortIdentifiers(); 
while (ports.hasMoreElements()) { 
    CommPortIdentifier port = (CommPortIdentifier) ports.nextElement(); 
    String type; 
    switch (port.getPortType()) { 
     case CommPortIdentifier.PORT_PARALLEL: 
      type = "Parallel"; 
      break; 
     case CommPortIdentifier.PORT_SERIAL: 
      type = "Serial"; 
      break; 
     default: /// Shouldn't happen 
      type = "Unknown"; 
      break; 
    } 
    System.out.println(port.getName() + ": " + type); 
} 

このコードを動作させるためのあらゆる解決策。次のように現在、私はエラーを取得しています。(シリアルポートに任意のデバイスを装着せずに。

Exception in thread "main" java.lang.UnsatisfiedLinkError: com.sun.comm.SunrayInfo.isSessionActive()Z 
     at com.sun.comm.SunrayInfo.isSessionActive(Native Method) 
     at com.sun.comm.Portmapping.registerCommPorts(Portmapping.java:155) 
     at com.sun.comm.Portmapping.refreshPortDatabase(Portmapping.java:100) 
     at javax.comm.CommPortIdentifier.<clinit>(CommPortIdentifier.java:138) 
     at PortTest.main(PortTest.java:9) 
Java Result: 1 

を、私は、JREとCOMMを設定した。私はそれを行うにはthisブログを追ってきました。

答えて

0

少し苦労した後、コードが実行されました。私が作った

1つのミスは、Fedora 13のためRxTx 2.2ライブラリを使用していたそれはlibSeriallibParellalファイルと2.1 RxTxComm jarファイルのバージョン2.2を使用しています。私がそれを取り出して使用したときRxTx2.1次のようなエラーが出ました。

gnu.io.RXTXCommDriver cannot be cast to javax.comm.CommDriver 

このエラーを確認しながら、上記の問題の2番目の間違いを見つけました。私はJava Comm APIでRxTx Driverを使っていました。実際にJava Comm APIの必須クラスファイルは、 "gnu.io"パッケージのRxTxライブラリですでに利用可能です。

javax.comm.*パッケージをすべてgnu.io.*に変更しました。今私はエラーなしでアプリケーションを実行することができます。

2

あなたは」 。。あなたが投稿あなたのことを言っているのエラー行の上の行を必要とネイティブライブラリが不足して

を再あなたはjavax.commの拡張子をインストールする必要はありません - http://www.oracle.com/technetwork/java/index-jsp-141752.html

Windowsを使用している場合、それはもはやサポートされますまたはavaiサン/オラクルからのメッセージ。古いバージョンをネット上やそれを移植している他の人に見付けることができます。

+0

http://www.agaveblue.org/howtos/Comm_How-To.shtml私はシステムを設定するためにこの投稿に従っています。 – Joe

+0

私はシリアルポートへの接続とちょっと混乱します。現在、私のシリアルポートにはデバイスが接続されていません。それのためにこれですか? Linuxで仮想シリアルポートを作成できますか?私はfedora OSを使用しています。 – Joe

+0

これはひどく時代遅れですが、最新のLinux版をダウンロードしていれば、少なくとも正しいファイルがあります。あなたが得るエラーは、javaが '.so'(ネイティブライブラリ)ファイルを見つけることができないことを意味します。ライブラリパスは 'System.out.println(System.getProperty(" java.library.path "));でチェックすることができます - ' .so'ファイルはそれらのいずれかにある必要があります。 –

関連する問題