Pergunta

A empresa em que trabalho fabrica hardware que se comunica com o computador por meio de uma porta serial.Empresas terceirizadas escrevem software que se comunica com nosso hardware.

Há momentos em que preciso diagnosticar nosso hardware.No entanto, um aplicativo de software de terceiros se conecta à porta serial quando o Windows é inicializado, bloqueando qualquer outra conexão.Não sei o nome deste aplicativo/serviço e nem sempre é o mesmo.

Existe alguma maneira de:

  • Encontre o nome/pid do aplicativo/serviço que está usando atualmente uma determinada porta serial ou
  • Roube a conexão da porta serial de outro aplicativo.

vb.net de preferência, mas também aceitarei uma resposta independente de idioma.

Foi útil?

Solução

Você pode usar o explorador de processos ferramenta também da SysInternals para procurar identificadores abertos.Nesse caso, você desejaria procurar por 'Serial', pois ele usa nomes de dispositivos que podem não ser mapeados para números de porta COM.(por exemplo.COM1 é \Device\Serial0 no meu sistema).

Se você quiser assumir o controle da porta serial de outro aplicativo, acho que precisará da cooperação do driver.

Outras dicas

Como Rob Walker disse, você pode descobrir quem está usando uma porta serial usando Explorador de processos.Na maioria das vezes, digitando Ctrl+F e pesquisar por "serial" mostrará quem tem uma porta serial aberta, mas acabei de me deparar com uma situação em que o identificador da minha porta serial "COM3" apareceu como "\Device\VCP0".Pode ser estranho porque estava rodando no VirtualBox com um conector USB para serial.

Se a pesquisa por "serial" e "device\vcp" não obtiver nenhum resultado, você poderá descobrir como os identificadores de porta serial são nomeados abrindo um com um programa conhecido.No Process Explorer, exiba o painel inferior com as alças abertas de cada processo digitando Ctrl+eu.Clique no processo que você usou para abrir a porta serial e observe no painel inferior quais alças parecem ser uma porta serial.Você pode abrir e fechar a porta enquanto olha, e o identificador do arquivo deve aparecer e desaparecer, além de ser destacado em verde ou vermelho.Claro, isso só é possível se você tiver mais de uma porta serial ou se a porta serial que você está tentando diagnosticar nem sempre estiver bloqueada por algum processo misterioso.

Sysinternals tem uma série de utilitários que considero muito úteis e educativos para rastrear o que os processos estão fazendo no sistema.

Eles têm um utilitário que faz exatamente o que você precisa, chamado Portmon, e forneça algumas informações sobre como funciona na parte inferior da página.Essas informações e algumas perguntas bem feitas provavelmente fornecerão tudo o que você precisa para implementá-las sozinho, se o utilitário não for suficiente.

-Adão

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top