Identificar portas seriais em uso

9 respostas
A

Salve galera. Alguém sabe como obter a lista de portas seriais que estão sendo usadas ???

9 Respostas

J

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

A

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

J

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

A

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.

J

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

J

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

A

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

é 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

P

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)

Criado 12 de novembro de 2014
Ultima resposta 14 de nov. de 2014
Respostas 9
Participantes 3