Tengo un problema extraño con algún código que heredé de otro programador que dejó la compañía, y necesito alguna guía sobre cómo comenzar a resolverlo.Se están creando puertos serie virtuales USB duplicados. ¿Qué podría causar esto?
El problema es este: de manera semi-regular, estamos descubriendo que se están creando puertos duplicados de comunicación virtual USB. Por ejemplo, en mi PC, cuando veo los puertos en el Administrador de dispositivos y selecciono "Ver dispositivos ocultos", tengo dos entradas para el mismo dispositivo, una en COM6 y otra en COM8.
Desafortunadamente, no podemos volver a crear el problema de manera confiable. Sospechamos que puede suceder cuando alguien desconecta rápidamente y vuelve a conectar el cable USB cuando nuestro software se está ejecutando, pero eso debe confirmarse.
Por lo que puedo decir, el código se escribió suponiendo que nadie desconectara nunca un cable. No veo ninguna lógica para detectar esta condición después de que se inicia el SW. Y falla al volver a enchufar el cable, lo que genera silenciosamente errores de lectura y escritura incluso después de volver a enchufar el cable. Debe reiniciar el programa para que funcione nuevamente.
Tengo muy poca experiencia de serie y USB, y estoy un poco perdido en cuanto a cómo empezar a arreglar esto.
¿Alguien puede sugerir por qué esto podría estar pasando?
Misc. detalles, por si pudieran ser relevantes:
código de serieUSB se encuentra en un C++ DLL conductores
VS2008
FTDIBUS USB/Serie
Windows XP y Win7
Captura de pantalla de duplicar las entradas del Registro (tenga en cuenta el valor de la clave seleccionada!)
posiblemente relacionado con esto? http://blogs.msdn.com/b/oldnewthing/archive/2004/11/10/255047.aspx – jcoder
Sí, JohnB es correcto. Los dispositivos sin número de serie se identifican por su ubicación en el bus USB. Cuando esto cambia, se ve como un dispositivo diferente. – janm
FTDI es bastante notorio por sus chiflados controladores. Póngase en contacto con ellos para obtener ayuda. –