.net - uso - probar puerto serial windows 7
Forzar un puerto COM para cerrar (6)
¿Algo como esto?
if (serialPort.IsOpen) serialPort.Close();
Estoy trabajando en una aplicación que usa el puerto COM para la comunicación con el controlador externo. Cuando reinicio la PC con el cable de comunicación conectado, Windows (7) abre el puerto, sin que se ejecute ninguna aplicación, por lo que no puedo acceder a él más. Traté de cerrarlo programáticamente, pero solo se mantiene.
Alguien tiene una idea de cómo puedo forzarlo a cerrar, cualquier programa que pueda ejecutar antes de mi aplicación, o una forma de cerrarlo programáticamente sin importar nada.
Lo que hice fue desactivar el controlador, apagarlo, reiniciar mi computadora, encenderlo (tan pronto como se cargue Windows) y volver para habilitarlo. Me funcionó con dos microcontroladores con este problema.
No logré cerrar el puerto, pero después de muchas búsquedas y pruebas encontré cuál era la fuente de mis problemas. Estoy publicando la solución para ayudar a cualquier persona que tenga el mismo problema.
Windows identifica los dispositivos con un flujo de datos constante conectado al puerto serie como un mouse serie (en este sistema era Microsoft Ball Ball) e intenta instalarlos, asumiendo el control del puerto sin ningún proceso que lo use. La solución es esperar a que Windows instale el dispositivo (ver Administrador de dispositivos en Mouses y otros dispositivos señaladores) y luego DESACTIVARLO. Si desinstala el dispositivo, se volverá a instalar y el problema volverá.
Gracias a todos los que trataron de ayudar, y espero que a otros les resulte útil esta solución.
No, no hay forma de forzar el cierre del puerto (vea esta pregunta ). No hay forma de obligar a otro proceso a cerrar el puerto para que pueda tomarlo.
Pero Windows no está abriendo el puerto por sí mismo, es probable que alguna otra aplicación que se ejecuta en segundo plano lo esté haciendo. Descargue Process Explorer y use "Find Handle or DLL" en el menú Buscar para encontrar el proceso con el puerto com abierto. Si se trata de un puerto COM físico en la máquina, se denominará Serial0, Serial1, ... o SerialN, donde COM1 se correlaciona con Serial0. Si se trata de un adaptador USB a COM, no estoy seguro de cuál será la identificación del dispositivo.
También podría intentar usar PortMon para observar la actividad en el puerto. PortMon te mostrará el proceso que tiene el puerto abierto.
Supongo que cuando cierras tu aplicación y reinicias la PC, el controlador externo no se cierra con elegancia y queda en un estado indefinido.
Cuando la PC se reinicia, el controlador todavía se encuentra en este estado ilegal y da la impresión de que no se puede abrir el puerto en la PC porque las comunicaciones no se pueden restablecer correctamente.
¿Quizás el controlador externo no está manejando los cambios de estado de las líneas DTR / DSR correctamente?
¿Cómo se cablea el cable entre la PC y el controlador?
Es difícil decir mucho más sin saber nada específico.
cómo resolvía apagar el dispositivo con la salida continua, desenchufar el usb, volver a conectarlo para que Windows detecte el número com y luego encender el dispositivo nuevamente.