Gerät misdetected als serielle Maus
Arbeite ich an einem Gerät kommuniziert mit einem PC über einen (virtuellen) seriellen port. Das problem ist, dass die Daten, die wir senden, wird gelegentlich falsch erkannt von Windows als eine bus-Maus haben, nach dem das "Microsoft Serial Kugelschreiber" - Treiber geladen ist und der Mauszeiger beginnt zu springen, um auf dem Bildschirm nach dem Zufallsprinzip klicken auf die Dinge.
Ein bisschen Googeln verrät, ist eine alte und bekannte problem mit der seriellen Geräten, bei denen der übliche work-around ist ein bisschen registry-hacking zu deaktivieren, die problematische Treiber. Es ist viel zu verlangen, von unseren Nutzern jedoch, und ich möchte lieber nicht über unsere Anwendung Herumspielen mit der Registrierung des Benutzers. Vor allem nicht, wenn Sie das Update ist abhängig von der Windows version und der Benutzer kann gut sein, mit einer bus-Maus.
Sondern ich möchte vermeiden das problem durch eine änderung unseres Protokolls keine Daten versenden, die dann eventuell uns fälschlicherweise als eine Maus. Das problem ist nur, ich bin mir nicht ganz sicher, was Muster zu vermeiden.
Anscheinend Microsoft-Maus-Protokoll besteht aus Paketen von vier Byte, wobei das MSB des ersten und der drei letzten ist klar.
Würde nur senden 7-bit-ASCII ausreichen? Gibt es andere Geräte, die ich befürchten muss, entdeckt zu werden, wie?
InformationsquelleAutor der Frage doynax | 2012-02-10
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich gerade diesem problem begegnet mir auf
Windows 7 Professional x64
und eine Lösung, die für mich gearbeitet wurde, um in der Registrierung und Bearbeiten Sie den folgenden Wert:Ändern
Value
zu4
und wird es aufhören, dieses problem Auftritt.Hier ist eine Liste aller gültigen Start-Werte:
Einen reg-edit-Befehl würde wie folgt Aussehen:
Müssen Sie dann den computer neu zu starten, der sollte sich jetzt korrekt starten und nicht versuchen, zu entdecken, eine serielle Maus.
Glück.
InformationsquelleAutor der Antwort Serdalis
Es stellt sich heraus, dass Maus-Erkennung in Windows ist normalerweise behandelt, indem die
serenum.sys
filter-Treiber. Dieser Treiber implementiert Unterstützung für ältere serielle Mäuse zusammen mit serielle plug-and-play. Microsoft hat sogar den sourcecode als WDK-Probe.Während der Erkennung der Anschlüsse schaltet 1200-7-N-1-Modus, während die Geltendmachung
DTR
+RTS
auf die eine Antwort erwartet wird, innerhalb von 200 ms, mit ein paar Wiederholungen im Fehlerfall. Leider für eine legacy-Maus eine einzelneM
oderB
Charakter reicht als Identifikation.In unserem Fall das Protokoll wurde überarbeitet, um zu vermeiden, diese Zeichen und erscheint nun nicht mehr fälschlicherweise.
Jedoch wurden wir mit einem virtuellen USB-serial-port und für einen herkömmlichen seriellen port dieser Ansatz ist möglicherweise etwas schwierig, da alles geschickt in eine andere Baudrate haftet zu schauen, wie line noise haben. In diesem Fall nehme ich an die einfachste Lösung ist wohl, wie bereits vorgeschlagen, um zu vermeiden, dass unerwünschte übertragungen.
Alternativ mit den seriellen Signale tatsächlich angeschlossen, oder abgefangen durch eine USB CDC-Gerät, die Verarbeitung der
DTR
oderRTS
Signale und halten off auf output. Die tatsächliche Implementierung der plug-and-play-Protokoll wäre noch hübscher option. Angeblich gibt es billige RS232-Kabel, um ohne eine volle Ergänzung der Steuersignale obwohl also dieser Ansatz könnte noch scheitern.InformationsquelleAutor der Antwort doynax
Habe ich festgestellt das Windows-Fehler selbst. Hier ist meine eigene Forschung auf dem Thema:
Microsoft erkennt diesen Fehler: http://support.microsoft.com/kb/819036
Beginnen Sie mit dem herunterladen Ihrer tool und sehen, ob es löst das Problem.
comdisable /list
bei der Ausführung des Programms.comdisable /disable COMx
wobei x die port-Nummer.Sollte dies hoffentlich als universal-Lösung.
Alternativ können Sie hack im boot.ini ich glaube aber nicht, das funktioniert in Vista/Win 7. Ich habe einige app-note von Cisco systems, das beschreibt, wie dies zu tun. Wenn das oben genannte nicht Ihr problem lösen, lass es mich wissen.
InformationsquelleAutor der Antwort Lundin
Ich auch auf dieses problem, behoben durch die Deaktivierung von "serial enumerator" in den erweiterten Eigenschaften der FTDI-Treiber (Eigenschaften der COM-ports im Geräte-Manager). Dies ist beschrieben in http://www.ftdichip.com/Support/Documents/AppNotes/AN_107_AdvancedDriverOptions_AN_000073.pdf.
InformationsquelleAutor der Antwort Reed Hedges
Vielleicht hilft dies ja:
Wir hatten das gleiche problem mit dem FTDI FT232RL.Wir fanden heraus, dass es ein hardware-Problem unserer platine.
FTDI-Datenblatt sagt über #RESET-Pin: Active low reset pin. Dies kann verwendet werden, von einem externen Gerät zum zurücksetzen des FT232R. Wenn erforderlich, können angeschlossen werden, oder nach oben gezogen, um VCC.
RESET-Pin war nicht erforderlich, dass Sie unseren Antrag, damit wir Verbindung zu Vcc über 1k Pull-Up.
Es schien, dass die pull-up von #RESET-Pin verursacht eine Undefinierte start-up des FT232RL, mindestens jeden zweiten Wandler, der wir angeschlossen an eine USB-Buchse verursacht einen Seriell-ball-point in der devive manager. Wir entfernt der pull-up-Widerstand at #RESET-Pin, damit die #RESET-Pin nicht verbunden ist. Da dann jedes interface gearbeitet proberly und nicht mehr erstellen, serielle-ball-Punkte in den Windows-Geräte-manager.
InformationsquelleAutor der Antwort Werner
Wenn du eine "echte" serielle Schnittstelle, oder ein USB-dongle (RS-232, RS-485, spielt es keine Rolle) dieses problem kann umgangen werden, indem dem ersten öffnen der seriellen Schnittstelle in Frage, mit einem terminal, oder was auch immer Anwendung, die Sie überwachen möchten es mit, und nur dann stecken Sie das Gerät in. In Ihrem eigenen Interesse, sollten Sie auch darauf achten, entfernen Sie das Gerät vor dem beenden der Verbindung.
Mit FTDI chips verlötet auf dem Gerät selbst, sind Sie kaputt. Es dauerte ein paar Runden für mich zu erklären, das management, dass ein Gerät die Kommunikation auf eigenen, gepaart mit einem FTDI-chip aufgelötet auf der platine meeting-Windows-Computer wird wahrscheinlich nicht passieren, für user-Freundlichkeit, egal, wie glatt eine USB-Buchse kann so Aussehen wie auf der Box... (zum Glück, alle diese Bedingungen zusammen kommen, sind Recht selten und ungewöhnlich)
InformationsquelleAutor der Antwort Jubatian
Ich hatte dieses problem seit 2010 mit serieller Skala Köpfe an den pc angeschlossen. Usb-zu-Seriell-Konverter oder nicht.. ich benutze onkly SILABS Gerät CP2102 oder ähnliches.. ich umgangen, indem Sie einfach so dass Sie den Treiber zu installieren und dann im Geräte-manager suchen Sie den Kugelschreiber Treiber unter Maus/HIDA und dann einfach DEAKTIVIEREN Sie den Treiber NICHT DEINSTALLIEREN, einfach deaktivieren. Dann, wenn Sie neu starten, auch mit dem Treiber instaliert es scheint windows ignoriert die Schnittstelle als serielle Maus und nutzt die Daten aus dem input. Sie finden auch, dass, wenn der Kugelschreiber-Treiber aktiv ist dann, dass die Schnittstelle in Betrieb ist und auch mal wieder ein COM-PORT nicht erreichbar... hoffe, das hilft einigen, die es gibt 🙂 Tx Ben
InformationsquelleAutor der Antwort Ben Burger
In meiner Entwicklungsumgebung habe ich einfach deaktiviert Serielle Maus von Microsoft aus dem Geräte-Manager.
Scheint dies zu lösen, den Täter, der von meinem problem. Bevor Sie dies tun, die
CH340G
chip habe ich in meinem design verwendet, um den unteren derDTR
fünf mal, bevor Sie die Verbindung initiiert, effektiv Neustart mein Arduino-board basiert und es nutzlos.InformationsquelleAutor der Antwort DRS David Soft