Nota: Se você leu o título e pensou "mas quem é que ainda usa portas seriais?" deve ser novo aqui neste blog.
Eu esbarrei no problema fazendo testes com o Windows Seven. Nenhum dos programas para portas seriais que eu tinha (incluindo os feitos por mim mesmo) funcionava, não importando o que eu fizesse. A princípio achei que fosse frescura do Seven, mas fiquei intrigado ao não encontrar nenhuma menção a isso em uma rápida busca no Google.
Será que havia algum processo usando a porta? Não era para haver, porque a instalação era recente e eu não havia instalado nada consciente de que usasse portas seriais. O indispensável Process Explorer me deu a resposta. Basta usar Find - Find Handle or DLL... para procurar por "serial":
Edit: O Seven tem seu próprio meio de ver isso, sem requerer o Process Explorer. Mas falarei sobre isso depois.
\Device\Serial0 é o que costumamos chamar de "COM1", que é justamente a porta que eu não estava conseguindo usar. Basta clicar na linha com o processo para o PEx mostrar o processo na sua janela principal. Lá basta passar o mouse por cima do nome para ver quem é:
Este é o programa que meu sintonizador de TV instalou para monitorar o seu controle remoto. O danado (e por isso eu nem pensei nele) é que o controle é USB e então o programa não deveria estar abrindo minha porta serial.
Depois de "matar" o processo o problema foi resolvido.
Mais tarde eu constatei que o programa tinha as duas opções (USB e serial) e por algum motivo se configurou para a opção errada no Seven. Eu havia instalado o mesmo programa antes no XP, onde ele havia se configurado para a opção certa, por isso nem sabia que existiam opções.
Santas ferramentas da SysTernals. Eu ja passei por um problema com sintoma similar mas relacionado a portas no acesso a internet. Estava instalando o Apache no meu Windows 2000 Professional e ele reclamava que alguém ou alguma coisa já estava usando a porta 80 (listening).
ResponderExcluirSe não fosse o TCPView, eu acho que ainda estaria procurando o culpado. O Skype!