Port Java Comm sous Windows-Détection automatique des ports


Je développe une application qui doit pouvoir communiquer avec des périphériques via des communications série sous Windows OS. L'application est écrite en Java. J'utilise la bibliothèque jSSC. (Javax.comm a des problèmes et RxTx n'a pas de support Java 8 à part une mise à jour non officielle) Les périphériques peuvent se connecter directement au PC en utilisant un port série, ou alternativement en utilisant un convertisseur USB-série.

Ma question: Les ports COM sous Windows sont dynamiques. Cela soulève un problème pour définir quel port comm à se connecter à. Existe-t-il un moyen de déterminer automatiquement le port COM auquel se connecter?

Jusqu'à présent, les seules solutions que j'ai pu trouver consistent à rechercher tous les ports com pour les ports actifs, à enregistrer cette liste, puis à demander à l'utilisateur d'insérer le périphérique et à effectuer une autre analyse - le port COM supplémentaire sera alors celui auquel se connecter.

Alternativement, le périphérique répondra à un paquet "d'identification" spécifique: je peux ouvrir chaque port COM et envoyer ce paquet et évaluation de la réponse. Cela a le risque que les autres appareils soient détournés pendant une courte période de temps, ce qui n'est pas idéal.

Author: Walter Aldum, 2015-08-28

1 answers

Pour détecter les ports dynamiquement, des fonctions spécifiques au système d'exploitation doivent être appelées. La bibliothèque SCM fournit une API pour détecter les ports de manière dynamique.

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();
}
 0
Author: samuel05051980, 2016-03-10 04:55:39