0

Windows OS でシリアル通信を介してデバイスと通信できるようにする必要があるアプリケーションを開発しています。アプリケーションはJavaで書かれています。jSSC ライブラリを使用しています。(Javax.comm には問題があり、RxTx は非公式の更新を除いて Java 8 をサポートしていません) デバイスは、シリアル ポートを使用して PC に直接接続するか、代わりに USB-to-Serial コンバーターを使用して接続できます。

私の質問: Windows の COM ポートは動的です。これにより、接続する通信ポートを定義する際に問題が発生します。どの COM ポートに接続するかを自動的に判断する方法はありますか?

これまでのところ、私が思いついた唯一の解決策は、すべてのCOMポートをスキャンしてアクティブなポートを探し、このリストを保存してから、ユーザーにデバイスを挿入するように求め、別のスキャンを実行することです.追加のCOMポートは、に接続します。

または、デバイスは特定の「識別」パケットに応答します。各 COM ポートを開いてこのパケットを送信し、応答を評価できます。これには、他のデバイスが短期間ハイジャックされるリスクがあり、理想的ではありません。

4

1 に答える 1

0

ポートを動的に検出するには、オペレーティング システム固有の関数を呼び出す必要があります。SCM ライブラリは、ポートを動的に検出するための API を提供します。

try {
    scm.registerUSBHotPlugEventListener(this, PRODUCT_VID, PRODUCT_PID, null);
    if(scm.isUSBDevConnected(PRODUCT_VID, PRODUCT_PID, null)) {
        USBhotplugEventQueue.offer(SerialComUSB.DEV_ADDED);
    }
} catch (Exception e) {
    e.printStackTrace();
}
于 2016-03-10T04:55:39.437 に答える