0

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

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で通信を設定しました。私はそれを行うためにこのブログをフォローしました。

4

2 に答える 2

2

必要なネイティブライブラリがありません。あなたが投稿したエラー行の上の行はあなたにそれを伝えています。

javax.comm拡張機能をインストールする必要があります-http : //www.oracle.com/technetwork/java/index-jsp-141752.html

Windowsを使用している場合は、サポートされていないか、Sun/Oracleから入手できません。ネット上またはそれを移植している他の誰かが古いバージョンを見つけることができるかもしれません。

于 2011-03-09T03:58:53.270 に答える
0

少し苦労した後、コードを実行しました。

私が犯した間違いの 1 つはRxTx 2.2、Fedora 13 のライブラリを使用していたことです。2.2 バージョンのlibSerialandlibParellalファイルと 2.1 RxTxCommjar ファイルを使用しています。削除して使用するとRxTx2.1、次のようなエラーが発生しました。

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

このエラーをチェックしているときに、私が犯した 2 番目の間違いと上記の問題の解決策を見つけました。Java Comm API で RxTx ドライバーを使用していました。gnu.io実際、Java Comm API で必要なクラス ファイルは、" " パッケージの RxTx ライブラリで既に利用可能です。

だから私はすべてのjavax.comm.*パッケージをに変更しましたgnu.io.*。これで、エラーなしでアプリケーションを実行できます。

于 2011-03-14T04:25:46.253 に答える