Ich verwende WinLIRC mit einem IR-Empfänger, der an die serielle Schnittstelle COM1 unter Windows 7 x64 angeschlossen ist. WinLIRC
wird zum Autostart-Ordner hinzugefügt (Start- & gt; Alle Anwendungen- & gt; Autostart), so dass es jedes Mal startet, wenn ich mich anmelde. Sehr oft (aber nicht die ganze Zeit) sehe ich Initialisierungsfehlermeldungen von WinLIRC
, die fortfahren für einige Zeit (einige Minuten), wenn ich die Initialisierung wiederholen, und nach einigen Wiederholungen wird es richtig initialisiert und funktioniert gut. Wenn ich es aus dem Start entfernen und manuell zu jedem anderen Zeitpunkt starte, startet es ohne Fehler.
Ich habe WinLIRC
sources heruntergeladen und MessageBox
Aufrufe hier und da hinzugefügt, damit ich sehen kann, was während der Initialisierung passiert und herausgefunden habe, dass CreateFile
Aufruf fehlschlägt:
Ich sehe Message-Box sagen "CreateFile (COM1) fehlgeschlagen mit 5", und 5 ist ein Fehlercode für "Zugriff verweigert" Fehler nach dieser Link .
Es stellt sich also die Frage, warum das Öffnen des COM-Ports nach dem Start von Windows mit einem solchen Fehler fehlschlagen und normalerweise wenige Sekunden oder Minuten später fortgesetzt werden kann?
Update : Der COM-Port ist der richtige.
Update2 : in Bezug auf die andere Anwendung, die den seriellen Port vor WinLIRC
öffnet. Ich machte folgendes: Ich legte Process Explorer in den Autostart-Ordner, so dass es auch beim Anmelden anfing neu gestartet. Sobald der Prozess-Explorer gestartet wurde, habe ich den Dialog "Find Handle oder Dll" aufgerufen, "Serial0" auf den Eingang gesetzt und "Search" gedrückt. Zu diesem Zeitpunkt hatte WinLIRC bereits das Meldungsfeld mit dem Hinweis "CreateFile (COM1) failed with 5" angezeigt. Dann habe ich gewartet, bis der Prozess Explorer-Suche endet, gesehen, dass es nichts gefunden, dann versucht, WinLIRC neu zu initialisieren und es erneut fehlgeschlagen. Ich schlage daher vor, dass der serielle Port nicht von einer anderen Anwendung geöffnet wird. Wenn jemand eine bessere Möglichkeit vorschlagen kann, es zu überprüfen, werde ich gerne erneut überprüfen.
Wenn ich während der Ausführung von WinLIRC im Prozess-Explorer nach "Serial0" suche, wird der winlirc.exe
-Prozess gefunden, so dass es aussieht, als ob der richtige Begriff gesucht wird.
Update3 : betrifft den seriellen Maustreiber. Es ist nicht im Gerätemanager aufgeführt, daher konnte ich es dort nicht deaktivieren. Ich habe jedoch diese Anweisungen zum Deaktivieren von sermouse
service und es nicht Hilfe.
Update4 : Noch eine Sache, die ich vergessen habe zu erwähnen. Es passiert nur, wenn ich mich bald nach dem Booten des PCs anmelde. Wenn ich Windows auf dem Anmeldebildschirm für einige Minuten belasse und mich später anmelde, initialisiert WinLIRC immer ohne Probleme.
Update5 : Leider habe ich keinen Zugriff auf den Computer, der dieses Problem reproduziert hat, so dass ich nicht mehr experimentieren kann.
Es braucht Zeit, um den Port zu initialisieren. Ihre Anwendung läuft auf Windows XP einwandfrei. Windows7s serielle Ports sind virtuell.
Sie können einen kleinen Code ausführen und überprüfen Verwenden von System.IO.Ports;
%Vor%Dies gibt Ihnen die Liste der seriellen Schnittstelle zurück. Überprüfen Sie den Status und zeigen Sie es im Meldungsfeld an. Mache diesen Code und starte ihn beim Start. Sie erhalten die Ursache.
Hier einige Links, die man besuchen muss, bevor man in die magische Welt der seriellen Programmierung in Windows eintaucht :)
Eine detaillierte Erklärung der seriellen Programmierung in Windows:
ein wenig veraltet (die Website heißt 1999-2003 ja, es ist veraltet), aber absolut nützlich:
Tags und Links winapi serial-port createfile