L'appareil a mal détecté comme étant en série de la souris
Je suis en train de travailler sur un dispositif qui communique avec un PC par l'intermédiaire d'un (virtuel) du port série. Le problème est que les données que nous allons envoyer occasionnellement mal identifié par Windows comme un bus de la souris, après que les "Microsoft Série stylo à Bille" pilote est chargé et que le pointeur de la souris commence à sauter partout sur l'écran et de façon aléatoire en cliquant sur les choses.
Un peu de Googling révèle qui est un vieux problème bien connu de périphériques série où le travail habituel-est autour d'un peu de registre de piratage pour désactiver le conducteur fautif. Que c'est beaucoup à la demande de nos utilisateurs, cependant, et je préfère ne pas avoir notre application de déconner avec le registre de l'utilisateur. Surtout pas quand la correction dépend de la version de Windows et l'utilisateur peut bien être l'aide d'un bus de la souris.
Au lieu je voudrais éviter le problème en changeant notre protocole afin de ne pas envoyer toutes les données qui peuvent nous faire mal identifiée comme une souris. Le seul problème est que je ne suis pas tout à fait certain de ce que les modèles à éviter.
Apparemment Microsoft du protocole de la Souris est constitué de paquets de quatre octets où le MSB de la première et de la dernière des trois est claire.
Serait l'envoi de seulement 7 bits ASCII suffit-il? Existe-il d'autres dispositifs j'ai besoin de vous soucier d'être détecté comme?
- J'ai trouvé dans le passé que si un appareil se présente à Windows comme un port COM puis commence à transmettre automatiquement dès qu'il est connecté au système qu'il obtient considérée comme une souris. C'est sans tenir compte des données qu'il envoie, et il n'a certainement pas avec les 4 octets. Pouvez-vous attendre un peu de temps avant de votre appareil commence à transmettre?
- ferblantier: Merci pour l'astuce! Je vais essayer d'avoir l'application PC sondage pour les mises à jour au lieu de cela, et attendez une seconde ou deux avant de faire la première demande.
- Je pense que nous avons réussi à créer la plus grande série de la souris sur la Terre... C'est un passage à niveau s'intégrer dans une paire de environ 1 mètre cube à skis, et il peut déplacer l'ensemble du logiciel dans la corbeille, dans une bronche de seconde!
Vous devez vous connecter pour publier un commentaire.
Je viens de rencontré ce problème moi-même sur
Windows 7 Professional x64
, et une solution qui a fonctionné pour moi était d'aller dans le registre et modifier la valeur suivante:Changement
Value
à4
et il va arrêter ce problème se produise.Voici une liste de toutes les valeurs de Départ:
Reg modifier la commande se présente comme suit:
Vous devez redémarrer l'ordinateur, ce qui devrait maintenant démarrer correctement et de ne pas tenter de découvrir une souris série.
bonne chance.
3
et4
sont totalement numéros de magie pour moi. Microsoft a documentation sur la sermouse noeud, mais pas sur le réelStart
élément lui-même.Il s'avère que la détection de la souris dans Windows est normalement pris en charge par la
serenum.sys
pilote de filtre. Ce pilote, cette prise en charge de l'héritage de série de la souris avec série de plug-and-play. Microsoft a même fourni le code source comme un WDK échantillon.Lors de la détection des ports des commutateurs à 1200-7-N-1 mode tout en affirmant
DTR
+RTS
pour laquelle une réponse est attendue dans les 200 ms, avec un couple de tentatives en cas d'échec. Malheureusement, pour un héritage de la souris une seuleM
ouB
caractère suffit d'identification.Dans notre cas, le protocole a été retravaillé afin d'éviter ces personnages, et maintenant ne semble pas être confondu plus.
Cependant, nous avons été à l'aide d'un port série USB virtuel et d'un port série traditionnel, cette approche peut être assez difficile comme ce qui est envoyé à une autre vitesse de transmission est susceptible de ressembler à un bruit de ligne. Dans ce cas, je suppose que la meilleure solution est probablement, comme cela a déjà été suggéré, pour éviter de faire non sollicités, à des transmissions.
Alternativement avec la série de signaux de contrôle réellement accroché, ou intercepté par un périphérique USB CDC, le traitement de l'
DTR
ouRTS
de signaux et de tenir au loin sur la production. Effectivement la mise en œuvre de la fonction plug-and-play protocole de serait une, même niftier option. Soi-disant il y a à bas prix câbles RS232 sans un plein complément des signaux de commande si cette approche peut encore échouer.DTR
broche à travers un100NF
cap est connecté à la broche reset.) Merci pour l'explication!J'ai aussi rencontré ce problème, résolu par la désactivation de la "série énumérateur" dans les propriétés avancées du pilote FTDI (propriétés de ports COM dans le Gestionnaire de Périphériques). Ceci est décrit dans http://www.ftdichip.com/Support/Documents/AppNotes/AN_107_AdvancedDriverOptions_AN_000073.pdf.
J'ai rencontré cette Windows bug moi-même. Voici mes propres recherches sur le sujet:
Microsoft reconnaît ce bug: http://support.microsoft.com/kb/819036
Démarrer avec le téléchargement de leur outil et voir si cela résout le problème.
comdisable /list
lors de l'exécution du programme.comdisable /disable COMx
où x est le numéro de port.Ce devrait, espérons-le travail comme une solution universelle.
Alternativement, vous pouvez pirater dans de démarrage.ini, mais je ne crois pas que cela fonctionne pour Vista/Win 7. J'ai quelques app note de Cisco systems, décrivant comment le faire. Si le ci-dessus ne résout pas votre problème, s'il vous plaît laissez-moi savoir.
Peut-être que cela aide:
Nous avons eu le même problème avec FTDI FT232RL.Nous avons trouvé que c'était un problème matériel au niveau de notre CIRCUIT.
FTDI-Datasheet dit à propos de #RÉINITIALISATION de Broches: Actif bas réinitialiser le code pin. Il peut être utilisé par un périphérique externe pour réinitialiser le FT232R. Si non nécessaires peuvent être déconnecté, ou tiré vers le haut à VCC.
RESET-Pin n'était pas nécessaire dans notre application, nous avons donc relié à Vcc via 1k de Pull-Up.
Il semblait que le pull-up de #RESET-Pin causé un indéfini start-up de la FT232RL, au moins chaque deuxième convertisseur, nous avons connecté à un port USB-prise a provoqué une série d'une balle de point dans le devive manager. Nous avons enlevé le pull-up-une résistance à #RESET-Pin, ainsi que le #RESET-Pin est déconnecté. Depuis lors, chaque interface travaillé arrivions et de ne plus créer de série d'une balle de points dans le gestionnaire de périphériques de Windows.
Si vous avez un "vrai" port série, ou un dongle USB (RS-232, RS-485, il n'a pas d'importance) ce problème peut être contourné en ouvrant d'abord le port série en question avec un terminal, ou n'importe quelle application que vous souhaitez surveiller, et seulement ensuite de brancher l'appareil. Pour votre propre intérêt, vous devez aussi faire attention à retirer l'appareil avant de mettre fin à la connexion.
Avec FTDI puces soudées sur l'appareil lui-même, vous êtes arrêté. Il a fallu quelques tours pour m'expliquer la gestion d'un dispositif de communication sur son propre couplé avec une puce FTDI soudé sur le PCB de la réunion des ordinateurs Windows qui ne risque pas de passer pour la convivialité, n'importe comment nappe d'une prise USB peut regarder comme sur le cabinet... (Heureusement, toutes ces conditions à venir, ensemble, sont assez rares et inhabituelles)
J'ai eu ce problème depuis 2010 avec un numéro de série à l'échelle chefs connecté à l'ordinateur. Usb to serial converter ou pas.. je utiliser onkly SILABS appareil CP2102 ou autres.. j'ai travaillé autour d'elle en permettant simplement le pilote à installer et ensuite dans le gestionnaire de périphériques chercher la bille pilote en vertu de la souris/HIDA et puis il suffit de DÉSACTIVER le pilote, NE DÉSINSTALLEZ PAS simplement le désactiver. Ensuite, lorsque vous redémarrez même avec le pilote instalé il semble que windows ignore le port série de la souris et utilise les données de l'entrée. Vous trouverez également que si la bille pilote est active, alors que le Port est en cours d'utilisation et retourne parfois un PORT COM n'est pas accessible... espérons que cela aide quelqu'un là-bas 🙂 Tx Ben
Dans mon environnement de développement, j'ai simplement désactivé Microsoft Souris Série à partir du Gestionnaire de Périphériques.
Cela semble résoudre le coupable de mon problème. Avant de le faire, le
CH340G
puce, je l'ai utilisé dans ma conception utilisé pour abaisser laDTR
cinq fois avant de lancer la connexion, effectivement le redémarrage de mon Arduino basée sur le conseil et le rendre inutilisable.