Estou com um certo problema, quando startup minha aplicação, ela funciona tudo bonitinho, mas quando tento me conectar a USB… Da alguns erros, diz que não consegue achar o driver. Imagino que seja erro no api comm. Pois fora da aplicação a USB funciona blzinha.
Gostaria de alguns comentarios e se alguém sofreu este tipo de problema???
Você tem um driver USB que simula uma serial, é isso?
O javax.com tem um problema. Ele só detecta as portas no momento que a classe é inicializada. Por isso, se você subir sua aplicação ANTES da porta USB ser “transformada” numa COM, ela nunca estará disponível para sua aplicação.
O método que faz essa detecção é private, então não há uma maneira fácil de chama-lo.
A maneira difícil, usando reflection, é essa aqui:
[code]
/**
* Refreshes the port list, redetect all system ports. It’s desirable that no
* serial connection is openned before calling this method.
*/
public static void refreshComPorts()
{
try
// try reloading the driver
{
Field masterIdList_Field = CommPortIdentifier.class.getDeclaredField(“masterIdList”);
masterIdList_Field.setAccessible(true);
masterIdList_Field.set(null, null);
String temp_string = System.getProperty("java.home")
+ File.separator + "lib" + File.separator
+ "javax.comm.properties";
Method loadDriver_Method = CommPortIdentifier.class.getDeclaredMethod(
"loadDriver", new Class[] {String.class});
loadDriver_Method.setAccessible(true); // unprotect it
loadDriver_Method.invoke(null, new Object[] {temp_string});
}
catch (Exception e)
{
//Faça o log dessa exceção. Removi meu código específico para isso.
}
}[/code]
Esse método atualiza a lista de portas. Você pode usa-lo antes de exibir as portas para o usuário escolher, ou antes de sua classe tentar acessar sua porta padrão USB.