Pesquisa personalizada

2008/10/03

NoSerialMouse: Ao Plugar Dispositivo Serial, Windows fica "maluco" e reconhece como Mouse

Algumas vezes quando se pluga algum dispositivo serial - e isso vale para dispositivos seriais que funcionam via USB, ou seja, aqueles que criam uma porta COM virtual no computador -, o Windows aparentemente fica maluco, um monte de coisas começam a acontecer na tela e se tem a impressão de que alguém ou alguma coisa tomou o controle do computador. Isso pode acontecer com qualquer dispositivo serial, apesar de frequentemente acontecer mais com certos tipos, como: qualquer GPS NMEA 0183, seja plugado na USB ou na porta serial.

O problema acontece porque ao se plugar o dispositivo, o Windows verifica que ele é serial e durante um pequeno período de tempo ele amostrará os dados que estão sendo transmitidos pelo dispositivo, por coincidência, no momento da amostragem o Windows poderá detectar alguma sequência de dados que caracterize um Mouse, nesse caso, graças a magia do plug-and-play, ele irá automaticamente adicionar um Mouse de acordo com o dispositivo que ele (o Windows) pensa se tratar à lista de dispositivos do computador. Após isso, ocorre o comportamente aparentemente aleatório e inesperado na tela.

Para resolver esse problema, é bastante simples: basta desativar o Mouse que foi criado no Gerenciador de Dispositivos. No caso do meu GPS, o WIndows o reconheceu como sendo o "Microsoft Serial Ballpoint" - então, foi só desativá-lo para resolver o problema.

No vídeo abaixo, mostro como reconhecer esse falso Mouse e como desabilitá-lo:

Apesar do procedimento acima ser simples, nem sempre é fácil executá-lo pois o ponteiro do mouse fica pulando na tela e clicando em tudo que é lugar, então, até que se possa executar todos os passos e desativar o "falso mouse", muito trabalho será necessário. Pensando nisso, resolvi pesquisar melhores soluções para o problema, já que muita gente passa e passará por isso. Veja o que encontrei:

NoSerialMouse

NoSerialMouse

Pensando no bem coletivo e aproveitando um pequeno programinha que fiz anteriormente, acabei por automatizar a solução descrita pelo artigo 283063 da Microsoft. A idéia foi criar algo bem simples, mas que fosse eficaz. Você deixa ele rodando antes de plugar o dispositivo e quando o dispositivo é plugado, ele automaticamente desativa o mecanismo que faria o Windows reconhecê-lo como um Mouse. O programa funciona particularmente bem com dispositivos USB e foi testado no Windows XP, Vista 64 e 2000. O NoSerialMouse pode listar todas as portas COM do computador ou somente as COM que estejam efetivamente disponíveis.

O NoSerialMouse é gratuito. No entanto, pode ser que alguém se interesse pelos fontes, já que o mecanismo de reconhecimento das portas seriais é particularmente sofisticado e reconhece com excelente precisão os mais diversos tipos de portas seriais - onde, inclusive, outros mecanismos de enumeração do hardware, falham (isso vale para Win2k, XP, Vista32/64). Os fontes do programa estão em Delphi 6 (com código e comentários em inglês) e posso, eventualmente, responder alguma questão por e-mail. Para adquirir os fontes, acesse:

Referências:

Labels: ,