L'identification de série/usb périphérique python
La solution à ce problème est probablement assez simple, mais je suis nouvelle interface avec un dispositif de façon dynamique. Ce que je fais c'est que je fais un python code exécutable, de sorte que l'utilisateur n'a pas à avoir Ralenti sur leur ordinateur ou tout type de interpréteur python, ce qui signifie que je ne sais pas quel port USB de l'appareil sera branché. Le programme doit être en mesure d'ouvrir une connexion à un périphérique qui est connecté par l'intermédiaire d'un adaptateur série-usb convertisseur. Comment puis-je déterminer quel périphérique connecté le périphérique approprié pour ouvrir un port? Je suis à l'aide de pySerial d'interagir avec l'appareil. Toute aide serait grandement appréciée.
Ce USB-to-serial converter? Est-il intégré à l'appareil, ou les utilisateurs ont besoin de trouver leur propre clé USB-to-serial converter utiliser? Pourraient-ils brancher l'appareil sur un port série directement?
Il va être sur windows XP. Quand je dis USB-to-serial converter, le câble de l'appareil est de série, mais j'ai été instruit que l'appareil allait être connecté à un adaptateur pour la brancher sur un port usb.
OriginalL'auteur user1161439 | 2012-08-01
Vous devez vous connecter pour publier un commentaire.
Peu importe la façon dont vous configurez votre appareil, à un certain moment, vous allez probablement avoir à demander à l'utilisateur où le port est, ou interroger tous les appareils de série pour une réponse connue. (Le scrutin a c'est des pièges, donc à lire!). Contrairement aux périphériques USB, il n'y a pas de vendeur/ID de l'appareil qui est fait connaître à l'OS lorsque vous attachez un bon vieil appareil de série.
D'abord, vous devez trouver les ports série. Voici une question qui pourrait aider: Qu'est-ce que la croix-plate-forme de la méthode de l'énumération des ports série en Python (y compris les ports virtuels)?.
Une fois que vous avez une liste de ports série, vous pourriez demander à l'utilisateur s'il savoir lequel utiliser. S'ils le font, problème résolu!
Si elles ne le faites pas, vous pourriez offrir à interroger TOUS les appareils de série avec certaines des données que vous savoir donnera un certain taux de réponse à partir de votre appareil. Gardez à l'esprit que si l'utilisateur a d'autres périphériques série attachée, votre chaîne de caractères "hello" octets pourrait en fait être l'auto-destruction de la séquence d'un autre appareil pour! Par conséquent, vous devez avertir l'utilisateur que le vote peut interférer avec d'autres appareils, et toujours demander avant de le faire.
Sans en savoir plus à propos de votre code (par exemple. ce comms cadre, le cas échéant, vous utilisez; vous faites ça dans la console ou êtes-vous à l'aide d'un outil graphique, etc), il est impossible de dire quelle est la meilleure manière de coder cela pourrait être. Dans le cas le plus simple, vous avez juste à boucle sur tous vos périphériques série, envoyez le message d'accueil et vérifier la réponse. (Vous pourriez aussi le faire en parallèle: boucle une fois pour le salut, et la boucle à nouveau pour vérifier ce qui est dans la mémoire tampon. Si vous allez obtenir plus de fantaisie que cela, utiliser une bibliothèque digne de ce nom.)
Note de côté: Vous pourrait être en mesure de contourner ce problème si vous avez un convertisseur intégré que vous pouvez configurer le fournisseur/ID de l'appareil, mais le convertisseur va encore être automatiquement détecté par un système d'exploitation moderne et énumérés comme un port série, vous n'aurez pas l'occasion de parler directement à un périphérique USB. Il pourrait être possible de déterminer lequel de port correspondant à l'ID, mais je n'ai jamais essayé de le faire. Mais cette approche est inutile si vous n'êtes pas celui qui arrive à choisir le convertisseur (par exemple. si c'est un utilisateur-câble fourni).
Tant que vous êtes sûr 😛
OriginalL'auteur detly
C'est le moyen que j'ai utilisé pour identifier Série-USB conveter appareil de type Arduino.
Il vérifie 'USB' Chaîne de caractères de la description de l'appareil.
OriginalL'auteur user_fs10
La seule façon que je peux penser pour contourner le problème, à sonder les périphériques inconnus, c'est avoir l'appareil d'envoyer des "bonjour" réponses continuellement. C'était, vous pouvez simplement vous connecter à tous les périphériques série et écouter les "bonjours". La connexion et l'écoute d'un périphérique série ne devrait pas louper.
L'inconvénient, c'est que vous avez ces messages qui encombrent votre série de flux. Vous pourriez avoir un "je suis ici maintenant, stfu de la commande" mais alors vous ne pouvez connecter qu'une seule fois.
FTDI puces ont une méthode d'identification, mais vous devez utiliser leur bibliothèque pour accéder aux données.
OriginalL'auteur Timmmm