2016-08-03 23 views
0

Rxtx APIを使用しています。シリアルポートが見つからない

シリアルポートが利用可能であることを100%確信しています。 Debianでは、デバイスが接続されているときに/dev/ttyUSB3が存在することがわかります。

getPortIdentifiers()を実行しようと、私はHashSetの上

CommPortIdentifier portIdentifier = CommPortIdentifier.getPortIdentifier("/dev/ttyUSB3"); 

を反復しようとしたときにも動作しませんでした何も得ませんでした。私が得た:

によって発生させたException:gnu.io.NoSuchPortException

を私が間違って何をしているのですか?私はかなりrxtxが正しく設定されていると確信しています。

+0

権限があるかissu e? 'sudo chmod 666/dev/ttyUSB3'を最初に実行してみてください – flakes

+0

助けたとは思わないでください。まだハッシュセットで何も表示されず、NoSuchPortExceptionがスローされました。 –

+0

thats strange ..多分セットアップ問題です。私は[このライブラリ](https://github.com/NeuronRobotics/nrjavaserial)を使用して成功しました:com.neuronrobotics:nrjavaserial:3.11.0 rxtxフォークで、すべてのバイナリが焼き付けられました。 – flakes

答えて

1

ここで問題となるのは、RXTXがポートを定義する方法です。デフォルトでは、特定のシリアルポート(Linuxでは/dev/ttySX)のみを検索します。あなたはこれを修正しなければならないいくつかのオプションがあります:(。コマンドラインで、またはコードのいずれかを介してより多くの詳細についてはRxtx documentationを参照)は、Javaを起動するときにgnu.io.rxtx.SerialPortsプロパティを設定し

  1. 異なるシリアルポートを使用しますシリアルポートを手動で選択できるライブラリ。 #2のために

、次は私が知っているライブラリです:

+0

先生、あなたは生きた伝説です。どうもありがとうございます。 #1は私の問題を解決しました。 –

+0

あまりにも早く私は少し話したと思う。一度やり直して、今度はNoSuchPortExceptionに戻ります。注目すべきは、私が.close()を呼び出さずにプログラムを閉じたことだけです。私はこの問題について少し読んで、解決策の1つは/ var/lockのファイルを削除することでしたが、これらは唯一のファイルです。LCK..ttyO4 LCK..ttyO5 \t LCK..ttyUSB2 lockdev subsys。なぜttyUSB3がここに表示されないのだろうか?シリアルポートの「ロックを解除する」他の方法はありますか? –

+0

@JerryLiuなぜポートがまだロックされているのかわかりません。私はRXTXを使っているので、しばらくしています。 'lsof'をチェックして、何か他のものがポートを開いているのを見ることができます。 – rm5248

関連する問題