6
void connect ( String portName ) throws Exception
{
    CommPortIdentifier portIdentifier = CommPortIdentifier.getPortIdentifier(portName);
    if ( portIdentifier.isCurrentlyOwned() )
    {
        System.out.println("Error: Port is currently in use");
    }
    else
    {
        System.out.println(portIdentifier.getCurrentOwner());
        CommPort commPort = portIdentifier.open(this.getClass().getName(),2000);

        if ( commPort instanceof SerialPort )
        {
            SerialPort serialPort = (SerialPort) commPort;
            serialPort.setSerialPortParams(115200,SerialPort.DATABITS_8,SerialPort.STOPBITS_1,SerialPort.PARITY_NONE);

            InputStream in = serialPort.getInputStream();
            OutputStream out = serialPort.getOutputStream();

            (new Thread(new SerialReader(in))).start();
            (new Thread(new SerialWriter(out))).start();

        }
        else
        {
            System.out.println("Error: Only serial ports are handled by this example.");
        }
    }     
}

あげてるよ

gnu.io.PortInUseException: Unknown Application
    at gnu.io.CommPortIdentifier.open(CommPortIdentifier.java:354)

Windows 7ホーム64ビットでJavaでRXTXを使用しています。

4

5 に答える 5

15

マシンに /var/lock フォルダーが存在することを確認します。


mkdir /var/lock
chmod go+rwx /var/lock

于 2013-12-24T13:46:07.847 に答える
3

システムを再起動し、ポートを無効にします。
実際の問題は、プログラムが実行されているときにポートが開かれ、プログラムの終了後に閉じられなかった場合です。
できます。

于 2012-01-29T16:16:05.020 に答える
2

ポートが実際に使用されていたため、この問題に遭遇しました。javaw.exe の以前のインスタンスが Windows タスク マネージャに表示され、ポートを占有していました。

以前の Java プロセスがハングした理由は、ハードウェアの問題でした。たまたま使用していた USB-2 シリアル コンバータを USB-2 ポートに接続すると、すべて問題なく動作しました。USB-3 ポートに接続すると、RXTX CommPortIdentifier コードがハングし、Java の後続のインスタンスが PortInUseException を受け取りました。

于 2012-07-05T15:26:11.453 に答える