/ / Java Comm port no Windows - Detecção automática de porta - java, windows, porta serial, jssc

Java Comm port no Windows - Detecção automática de porta - java, windows, porta serial, jssc

Eu estou desenvolvendo um aplicativo que precisa sercapaz de se comunicar com dispositivos através de Serial Comms no sistema operacional Windows. O aplicativo é escrito em Java. Eu estou usando a biblioteca jSSC. (Javax.comm tem problemas e RxTx não tem suporte a Java 8 além de uma atualização não oficial) Os dispositivos podem se conectar diretamente ao PC usando uma porta serial ou, alternativamente, usando um conversor USB-para-Serial.

Minha pergunta: Portas COM no Windows são dinâmicas. Isso levanta um problema para definir qual porta de comunicação se conectar. Existe uma maneira de descobrir automaticamente qual porta COM para se conectar?

Até agora, as únicas soluções que conseguiIsso envolve a varredura de todas as portas COM para as portas ativas, salvando esta lista e, em seguida, solicitando que o usuário insira o dispositivo e realize outra varredura - a porta COM adicional será a única a ser conectada.

Como alternativa, o dispositivo responderá a umpacote específico de "identificação": posso abrir cada porta COM e enviar este pacote e avaliar a resposta. Isto tem o risco de os outros dispositivos serem sequestrados por um curto período de tempo, o que não é ideal.

Respostas:

0 para resposta № 1

Para detectar portas, funções específicas do sistema operacional dinamicamente precisam ser chamadas. A biblioteca do SCM fornece API para detectar portas dinamicamente.

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();
}