SerialPort.GetPortNames () retorna nomes de porta incorretos
Embora o c # não seja minha linguagem de programação principal, estou mantendo esse programa há alguns anos. Este programa se conecta a um dispositivo em uma porta serial e funciona no Windows XP até 8.1. Um "recurso" específico é que ele usa o .NET Framework 2.0.
Com alguns usuários atualizando para o Windows 10, temos reclamações de que o programa não pode detectar / abrir a porta COM do dispositivo. Confirmamos isso em nossos próprios sistemas de teste com a instalação limpa do Win10.
Acontece que a função SerialPort.GetPortNames () retorna nomes de portas incorretos e adiciona caracteres "estranhos" após o nome da porta. Por exemplo:
COM3 吀COM3 䡢COM3 ゠Etc. Quando atualizo a lista, toda vez que outro caractere (ou dois) aparece após o número. O código de teste é super direto:
string[] portNames = System.IO.Ports.SerialPort.GetPortNames();
log("Available ports:");
foreach (string PortAvailable in portNames)
{
log(PortAvailable);
}
Onde a função de log adiciona uma linha a um TextBox padrão no formulário:
txtLog.Text += Msg + Environment.NewLine;
Isso funciona em todas as outras versões do Windows. Eu verifiquei o registro e tudo parece bem lá também. Alguém tem uma idéia sobre isso?
Suspeito que o .NET Framework 2.0 não seja mais 100% compatível, embora você possa habilitá-lo nos recursos do Windows e parece que o próprio programa funciona bem (além do meu problema de porta serial). Estou com um pouco de medo de atualizar para um .NET mais novo, sem falar no VisualStudio 2008 para c # (max = .NET 3.5). Observe que o programa ainda precisa ser executado no Windows XP também (a versão do POS ainda é mantida pela Microsoft).
ADICIONADO: "Atualizei" um programa de teste para o .NET 3.5 e ainda tenho exatamente o mesmo problema. O próximo passo é instalar um novo VisualStudio (parece que hoje em dia é grátis? Devo verificar também as configurações de privacidade no Studio? ;-).
ADICIONADO 2: Instalou o VisualStudio 2015 e fez várias compilações com diferentes versões do .NET Framework. v2.0 e 3.5 ainda adicionando o caractere estranho. Mas, na v4.0 e acima, esse problema parece estar resolvido! Agora, para compilar o programa original e trabalhar para o novo Framework. Mas acho esse problema realmente estranho e esperaria que isso atingisse mais funções .NET e mais programas.