¿Cómo puedo determinar qué proceso está utilizando un puerto serie?


La compañía para la que trabajo hace hardware que se comunica con la computadora a través de un puerto serie. Las empresas de terceros escriben software que se comunica con nuestro hardware.

Hay momentos en los que necesito diagnosticar nuestro hardware. Sin embargo, una aplicación de software de terceros se conecta al puerto serie cuando se inicia Windows, bloqueando cualquier otra conexión. No conozco el nombre de esta aplicación / servicio y no siempre es el mismo.

¿hay alguna manera de o bien:

  • Busque el nombre/pid de la aplicación/servicio que está utilizando actualmente un puerto serie dado o
  • Robe la conexión del puerto serie de otra aplicación.

Vb.net preferiblemente, pero tomaré una respuesta agnóstica del lenguaje también.

Author: Grant, 2008-09-03

3 answers

Puede usar la herramienta process explorer también desde SysInternals para buscar manejadores abiertos. En este caso, querrá buscar 'Serial' ya que utiliza nombres de dispositivos que pueden no mapearse a números de puerto com. (por ejemplo, COM1 es \Device \ Serial0 en mi sistema).

Si desea tomar el control del puerto serie desde otra aplicación, creo que necesitaría la cooperación del controlador.

 20
Author: Rob Walker,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2008-09-03 18:42:35

Como Rob Walker dijo, puedes encontrar quién está usando un puerto serie usando Process Explorer. La mayor parte del tiempo, escribiendo Ctrl+F y la búsqueda de "serial" le mostrará quién tiene un puerto serie abierto, pero me encontré con una situación en la que el controlador de mi puerto serie "COM3" apareció como "\Device\VCP0". Puede ser extraño porque se estaba ejecutando en VirtualBox con un conector USB a serie.

Si busca "serial" y "device\vcp", no obtendrá ningún resultado, es posible que pueda averiguar cómo se nombran los controladores del puerto serie abriendo uno con un programa conocido. En el Explorador de procesos, muestre el panel inferior con los controladores abiertos de cada proceso escribiendo Ctrl+L . Haga clic en el proceso que utilizó para abrir el puerto serie y mire a través del panel inferior para ver qué controladores parecen ser un puerto serie. Puede abrir y cerrar el puerto mientras está mirando, y el controlador de archivo debe aparecer y desaparecer, además de resaltarse en verde o rojo. Por supuesto, esto solo es posible si tiene más de un puerto serie o el puerto serie que está tratando de diagnosticar no siempre está bloqueado por algún proceso misterioso.

 7
Author: Don Kirkby,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-05-23 11:55:15

Sysinternals tiene un montón de utilidades que encuentro muy útiles y educativas para rastrear lo que los procesos le están haciendo al sistema.

Tienen una utilidad que hace exactamente lo que necesita llamada Portmon, y dan alguna información sobre cómo funciona cerca de la parte inferior de la página. Esa información y algunas preguntas bien hechas probablemente le darán todo lo que necesita para implementarlo usted mismo si la utilidad no es suficiente.

-Adam

 3
Author: Adam Davis,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2008-09-03 17:52:50