Der serielle Port konnte in .NET nicht geöffnet werden

8

Ich versuche, COM1 zu öffnen, bekomme aber jedes Mal, wenn ich SerialPort.Open() aufruft, einen seltsamen Fehler.

Der Fehler ist:

  

Der angegebene Portname beginnt nicht mit COM / com oder wird nicht in einen gültigen seriellen Port aufgelöst.   Parametername: PortName

Der Code ist sehr einfach:

%Vor%

Wenn ich SerialPort.GetPortNames() aufruft, gibt es einen Port namens "COM1" zurück.

Ich habe überprüft, dass ich einen "COM1" auf meinem Computer habe, und ich verwende ihn nicht in anderen Anwendungen. Wenn ich den Code auf einem anderen Computer ausführe, funktioniert es. Auf meinem System läuft Windows Vista. Die Version von .NET ist 2.0.

Gibt es eine Sicherheitseinstellung, die ich irgendwo ändern muss? Ich bin als Administrator angemeldet und habe die Benutzerkontensteuerung deaktiviert.

Weitere Informationen

Ich habe Process Explorer verwendet und bestätigt, dass nichts \ Device \ Serial0 verwendet.

Workaround

Ich habe einen USB-Seriell-Adapter (COM3) installiert, und es funktioniert einwandfrei. Stelle dir das vor. Es muss ein Problem mit COM1 geben.

    
Jon B 18.11.2009, 21:42
quelle

5 Antworten

5

Ich hatte dieses Problem auch. Es stellte sich heraus, dass ich einen Drucker eingerichtet hatte, um den COM-Port zu verwenden, den ich öffnen wollte. Sobald ich den Drucker geändert habe, um einen anderen Hafen zu verwenden, öffnete der Hafen gerade fein.

    
NoonKnight 11.09.2012 17:52
quelle
1

Versuchen Sie, die Notation \. \ COMX statt nur COMX zu verwenden. Stelle sicher, dass du die Charaktere entkommst:      "\\. \ COM1"

Edit: Wops, SO entkommt meinem \ so sollte es so sein (Leerzeichen auslassen):       "\ \ \ \. \ \ COM1"

    
Raúl Ferràs 19.11.2009 11:21
quelle
1

Sie könnten versuchen, die Eigenschaften des Ports einzurichten, anstatt den Konstruktor zu verwenden.

%Vor%

Ich habe auch Probleme mit Serial Comms und Microsoft Active Sync. Ich bin mir nicht sicher, ob Sie das ausführen oder nicht, aber es könnte einen Versuch wert sein, es zu töten (Prozessname im Task-Manager ist wcescomm.exe). Hoffe das hilft.

Sie könnten Marshal.GetLastWin32Error () auch verwenden, um zu sehen, ob etwas Low-Level ein Problem verursacht? Ich bin mir nicht sicher, ob das Ihnen mehr Informationen geben wird.

    
SwDevMan81 19.11.2009 16:05
quelle
1

Möglicherweise ist eine Anwendung, die im Hintergrund ausgeführt wird, wahrscheinlich Ihr Port geöffnet (siehe Frage) ).

Laden Sie den Prozess-Explorer herunter und suchen Sie mit dem "Find Handle oder DLL" im Menü "Suchen" Prozess mit geöffnetem COM-Port. In meinem Fall benutzt spoolsv.exe immer COM1, COM3 Port. Also habe ich einen anderen COM-Port (COM2) benutzt, viel Glück!

    
s.c 23.02.2017 05:57
quelle
-1

Vielleicht ein Tippfehler? Stellen Sie sicher, dass Sie COM1 in allen englischen Buchstaben eingeben.

    
denisenkom 19.11.2009 11:00
quelle

Tags und Links