Salve galera. Alguém sabe como obter a lista de portas seriais que estão sendo usadas ???
eu faria dessa forma:
listaria as portas existentes no computador;
verificaria se cada porta listada esta aberta.
[/code]
if(connection.isOpen()){
// porta aberta
}
else{
…
}
[code]
sds
j.silvestre
Entao, acontece que as portas em uso não são carregadas pelo java elas somem
Esse é o metodo que carrega as portas mas as que estão em uso ele não trás
Enumeration enu = CommPortIdentifier.getPortIdentifiers();
while (enu.hasMoreElements()) {
CommPortIdentifier porta = (CommPortIdentifier) enu.nextElement();
if (porta.getPortType() == porta.PORT_SERIAL) {
lista_portas.add(porta.getName());
}
}
alexafe,
Pelo que eu vi vc esta usando a API RX/TX, Todas as portas seriais que aparece em : Painel de controle -> Gerenciador de Dispositivos -> Portas(COM e LPT)
são listadas mesmo estando em uso, então se vc tentar abrir uma porta RS232 já em uso vai ocorrer uma exception, por isso a verificação antes.
sds
j.silvestre
Vou citar um exemplo que acontece aqui.
Quando eu coloco no computador um modem 3G para envio de SMS, esse meu metodo carrega quatro portas 1, 2, 3 e 4 , por exemplo se eu configurar a porta 3 para o modem 3G enviar SMS quando o modem entra em ação e ocupa a porta 3 o meu metodo java não carrega mais a porta 3 apenas mostra as portas 1, 2 e 4. Não sei o que tem de errado.
No seu método de listar portas, não tem nada de errado. Eu uso varias portas seriais, algumas reais ,outras (Conversor usb/serial), e não tenho problemas, verifica se quando vc conecta o modem na porta 3, ela não é removida do Painel de controle -> Gerenciador Dispositivos-> Portas Com, e tenta atualizar as DLLs da serial para ver se resolve.
sds
j.silvestre
o que pode estar acontecendo é que a serial é criada, apenas para start do modem, depois é destruída e o modem se conecta diretamente com o barramento usb. Como ela é destruída vc não consegue listar a mesma. Pesquisa ai depois nos de um retorno.
sds
j.silvestre
-Após colocar o modem no computador no gerenciador de dispositivos do windows mostra as portas : COM 1, COM 3, COM 4, COM 5, COM7 em (Portas COM e LPT).
-Se o modem estiver configurado em suas opções no gerenciador de dispositivos do windows no menu (Modems) na COM 6. Mas o gerenciador de dispositivos em (Portas COM e LPT) não mostra essa porta COM 6.
- Se eu configurar o modem em no gerenciador de dispositivos em (Modems) para pegar a COM 2, mas no menu (Portas COM e LPT) a COM 6 e a COM 2 não aparecem no gerenciador. Mas meu metodo (JAVA) carrega a porta COM 2 e some a COM 6, se ok ele mostra a porta que o modem está configurado juntamente com as portas exibidas em (Portas COM e LPT). Agora o retorno do metodo é COM : 1, (2), 3, 4, 5, e 7.
Esse método apenas carrega as COM 1, (2), 3, 4, 5, e 7., quando o modem não está usando. Mas quando a aplicação fala pro modem enviar SMS esté mesmo método não carrega a porta COM 2, ela some. Lembrando a COM 2 não é mostrada em (Portas COM e LPT).
Enumeration enu = CommPortIdentifier.getPortIdentifiers();
while (enu.hasMoreElements()) {
CommPortIdentifier porta = (CommPortIdentifier) enu.nextElement();
if (porta.getPortType() == porta.PORT_SERIAL) {
lista_portas.add(porta.getName());
}
}
é não é problema da API RX/TX, nem dos seus métodos, de alguma forma, o modem acaba excluindo a porta serial que ele usa(no start), se vc
observar no painel de controle, deve achar uma conexão USB com o nome do modem. tipo ele mata a serial e cria uma conexão USB.
sds
j.silvestre
alexafe… uso estas três classes para obter comunicação com porta serial… veja se te da uma luz… (ta meio bagunçado, mas é que não estou com o projeto aqui na máquina para filtrar o que vc deseja… mas da para vc dar uma analisada)