2009-05-19 20 views
1

私はrxtx apiを使用して、comポート経由でGPSデバイスからデータを読み込みます。今、私は設定ファイルを読んで、リストされたポートを探して正しいCOMポートを探しています。私が抱えている問題は、デバイスが接続されていない場合、COMポートが変更される可能性があり、ユーザーは設定ファイルを変更する必要があるということです。私はC#でこれと似たアプリを書いて、comポートの代わりにwindowsデバイス名を表示することができました。そして、デバイス名が設定ファイルの名前と一致するまでcomポートを循環しました。この方法を使用すると、使用されているCOMポートが変更されても、設定ファイルの内容は変更されません。 rxtx APIでこれを行う方法はありますか?rxtx com port

ありがとうございます!

答えて

1

興味があれば...

私はC#でソケットを監視するWindowsサービスを作成しました。クライアントがそのソケットに接続すると、サービスはポート名とそのポートにあるデバイスIDを収集し、文字列のデータをcomポート経由で送信します。クライアントは文字列を解析して必要なデータを取得します。

私の場合は文字列が渡されるのである: 「ACPI \ PNP0501 * PNP0501、COM1、PCI \ VEN_8086 & DEV_29B7 & SUBSYS_02111028 & REV_02 PCI \ VEN_8086 & DEV_29B7 & SUBSYS_02111028 PCI \ VEN_8086 & DEV_29B7 & CC_070002 PCI \ VEN_8086 & DEV_29B7 & CC_0700、COM3、USB \ Vid_067b & Pid_2303 & Rev_0400のUSB \ Vid_067b & Pid_2303、COM5"

私はそれを解析するとき、私はそのACPI \ PNP0501 * PNを見ることができますP0501はCOM1のデバイスID、COM3には3つのデバイスID、COM5には2つのデバイスIDがあります。

これはこれを処理する最善の方法ではないかもしれませんが、私のニーズに十分であり、JNIから私を救ってくれました。 :)

0

CommPortIdentifier.getPortIdentifiersには、Javacomm APIで使用可能なシステム内のすべてのポートが一覧表示されます。デバイスを繰り返して、デバイスが接続されているポートを見つけます。

+0

私はそれをしましたが、ポートを使用しているデバイスのデバイスIDを私に与えないので、各ポートのComPortIdentifierを返します。それを使用すると、私はまだ私が探しているポートを知る必要があるので、デバイス名ではなく、ポート名(すなわちCOM3)を得ることができます。 – beyerss

+0

正確に何が必要ですか?あなたの質問から、使用可能なすべてのポートを列挙して探しているポートを見つけて、設定ファイルを変更する必要がないように思えます。間違った質問をしない限り、これはあなたを助けるはずです。 :) – Bombe

+0

あなたが私がまだプラグインされてプラグインされた後に新しいCOMポートを取得した場合(私のシステムで頻繁に起こる)、設定ファイルを変更する必要があると私は示唆しました。 C#の私のコードは、comポート(変更されない)上のデバイス名を探しました。comポートが変更されても、アプリケーションは正しいポートを見つけることができます。うまくいけば、これはもっと意味をなさないでしょう。 – beyerss

0

COMポート上のデバイスに関連付けられた名前を取得する場合(特に、ドライバがインストールされている場合)は、恐怖のJava->ネイティブインターフェイスを使用する必要がありますこの情報を収集するWindows APIに話してください。この情報が収集されてあなたに提供されるという点で、C#は素晴らしいですが、Javaではこの余分なステップを踏まなければなりません。

Windows Function Discoveryが有用かもしれません。私は、APIがこの機能をどのように提供しているのか正確には分からない。

+0

ありがとう、私はそれを見ていきます。 – beyerss