Wie kann ich feststellen, welcher Prozess eine serielle Schnittstelle verwendet?

StackOverflow https://stackoverflow.com/questions/42197

  •  09-06-2019
  •  | 
  •  

Frage

Die Firma, für die ich arbeite, stellt Hardware her, die über einen seriellen Anschluss mit dem Computer kommuniziert.Drittunternehmen schreiben Software, die mit unserer Hardware kommuniziert.

Es gibt Zeiten, in denen ich unsere Hardware diagnostizieren muss.Allerdings stellt eine Software-App eines Drittanbieters beim Start von Windows eine Verbindung zum seriellen Port her und blockiert so jede andere Verbindung.Ich kenne den Namen dieser Anwendung/dieses Dienstes nicht und es ist nicht immer derselbe.

Gibt es eine Möglichkeit:

  • Suchen Sie den Namen/die PID der App/des Dienstes, die bzw. der derzeit einen bestimmten seriellen Port verwendet
  • Stehlen Sie die serielle Port-Verbindung von einer anderen App.

vb.net vorzugsweise, aber ich nehme auch eine sprachunabhängige Antwort.

War es hilfreich?

Lösung

Du kannst den ... benutzen Process Explorer Tool ebenfalls von SysInternals zur Suche nach offenen Handles.In diesem Fall sollten Sie nach „Seriell“ suchen, da dabei Gerätenamen verwendet werden, die möglicherweise keinen COM-Portnummern zugeordnet sind.(z.B.COM1 ist \Device\Serial0 auf meinem System).

Wenn Sie die Kontrolle über die serielle Schnittstelle von einer anderen App aus übernehmen möchten, benötigen Sie meiner Meinung nach die Mitarbeit des Treibers.

Andere Tipps

Als sagte Rob Walker, können Sie herausfinden, wer einen seriellen Port verwendet Process Explorer.Meistens tippen Strg+F und die Suche nach „seriell“ zeigt Ihnen, wer einen seriellen Port geöffnet hat, aber ich bin gerade auf eine Situation gestoßen, in der der Handle meines seriellen Ports „COM3“ als „\Device\VCP0“ angezeigt wurde.Es mag seltsam sein, weil es unter VirtualBox mit einem USB-zu-Seriell-Anschluss lief.

Wenn die Suche nach „serial“ und „device\vcp“ keine Ergebnisse liefert, können Sie möglicherweise herausfinden, wie serielle Port-Handles benannt werden, indem Sie eines mit einem bekannten Programm öffnen.Zeigen Sie im Prozess-Explorer durch Eingabe den unteren Bereich mit den offenen Handles jedes Prozesses an Strg+L.Klicken Sie auf den Prozess, den Sie zum Öffnen des seriellen Ports verwendet haben, und schauen Sie im unteren Bereich nach, welche Handles aussehen, als handele es sich um einen seriellen Port.Sie können den Port öffnen und schließen, während Sie suchen. Das Dateihandle sollte angezeigt und ausgeblendet sowie grün oder rot hervorgehoben werden.Dies ist natürlich nur möglich, wenn Sie über mehr als einen seriellen Port verfügen oder der serielle Port, den Sie diagnostizieren möchten, nicht immer durch einen mysteriösen Prozess gesperrt ist.

Sysinternals verfügt über eine Reihe von Dienstprogrammen, die ich sehr nützlich und lehrreich finde, um herauszufinden, welche Prozesse Prozesse mit dem System bewirken.

Sie verfügen über ein Dienstprogramm, das genau das tut, was Sie brauchen Portmon, und geben Sie unten auf der Seite einige Informationen zur Funktionsweise an.Diese Informationen und ein paar gut gestellte Fragen werden Ihnen wahrscheinlich alles geben, was Sie brauchen, um es selbst zu implementieren, wenn das Dienstprogramm nicht ausreicht.

-Adam

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top