wie schließen Sie einen serialport von einem anderen Programm verwendet
Ich bin writting ein SerialPort-Programm. Manchmal, wenn ich öffnen will SerialPort, eine UnauthorizedAccessException geworfen wird :der Zugriff auf COM1 verweigert. Dies ist beause einem anderen Programm( das ist geschrieben von jemand anderes, und ich habe nicht seine soucecode ) ist mit COM1, und das Programm nicht schließen, COM1, wenn er sich beendet.
Ich möchte Fragen, 2 Fragen:
- Wie nahe COM1 mit meinem code (vor allem C# - code), wenn es verwendet wird
durch ein anderes Programm? - Wenn ich nicht in der Nähe COM1 mit C# - code, wie kann ich in der Nähe oder frei COM1 in Windows OS?
Dank.
- Sie möglicherweise in der Lage, schalten Sie den port mithilfe von WMI. msdn.microsoft.com/en-us/library/windows/desktop/...
- Meine Vermutung ist, dass das Programm, ist die überhöhung der Com-Port ist nicht komplett beenden, da windows sollte wieder der Com-Port, haben Sie versucht, zu schauen, ob der Prozess noch läuft?
- Ich denke auch, dass einige Programm sich nicht schließen SerialPort nach der Benutzung. Aber ich bin mir nicht sicher welchen.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Dieser Stack-Overflow-Frage ist der erste Schritt: Wie bekomme ich die Liste der offenen file-handles, die durch verarbeiten in C#?
Sobald Sie dass haben, Sie können den code ändern, gibt es in der Nähe des Griffs, oder einfach zu töten den Prozess, der das öffnen und handhaben.
Dies ist jedoch sehr riskant*, anfällig für Probleme, und müssen neu entwickelt, basiert auf spezifischen Implementierungen (x32 vs x64 vs ARM) plus das, was 'COM1' Karten, um auf dieser bestimmten Maschine.
Auf Risiko: Wenn der serielle Anschluss wird verwendet, um, zum Beispiel, installieren Sie eine neue firmware auf ein Handy oder ähnliches - schließen Sie den port führen kann, bricking das Gerät. Wenn der port verwendet wird, um Daten zu übertragen, schließen Sie den port führen kann, Daten zu verlieren.
Glück. Aber bitte NICHT mir die Schuld, wenn Sie zu zerstören Ihr system oder Ihre Daten verlieren.
\Device\Com0
oder\Device\Serial0
- Siehe Win32 Datei-Benennung - und SysInternals WinObj durchsuchen des Computers Geräte.Können Sie in der Nähe comm-port in C# durch den Aufruf
Aber Sie können Sie nicht schließen Sie den COMM-port, es sei denn, es wird geöffnet, indem Sie nur.
Stellen Sie sicher, dass beim schließen der Anwendung, die Sie schließen den comm port. Wenn Sie können code, den wir ansehen kann.