Ich benutze einen Arduino für die Erkennung mit Python 2.7 unter Windows XP, aber die nicht-statische Art der USB-zu-Seriell-Port-Übersetzung bereitet mir Kopfschmerzen. Mit einem physischen seriellen Port gibt es kein Problem, das die Portposition hart codiert, aber das Arduino bewegt sich basierend darauf, was zum Zeitpunkt der Objektinstanzierung angeschlossen ist oder nicht. Gibt es einen Weg in Python für mich, nur die Portadresse während jeder Objektinitialisierung zu erhalten und sie an PyVISA oder pySerial ?
Ich schlage auch einen Händedruck vor, aber tue es auch anders. LESEN Sie vor dem Start Ihres Programms nur die Eingaben von allen seriellen Anschlüssen. Wenn Sie das Gerät aufdrehen, können Sie etwas wie ein EIN-Signal senden. Wenn Ihr Code das ON-Signal an diesem Port erkennt, führen Sie einen Handshake durch.
In pySerial gibt es eine ziemlich versteckte Möglichkeit, auf allen seriellen Ports nach VID / PID zu suchen (zumindest unter Windows). Finden Sie einfach die VID / PID des Arduino in Port-Eigenschaften und fügen Sie es in den Python-Code ein.
Natürlich funktioniert das nicht, wenn Sie mehrere Arduino angeschlossen haben (gleiche VID / PID)
%Vor%Ich empfehle ein Handshake-Signal und scanne alle Ports. Zum Beispiel senden Sie "whoru" von Ihrem Python-Skript auf die arduiono und haben Code auf dem arduiono, der mit "arduino" reagiert, wenn es "whoru" auf der seriellen Schnittstelle erkennt. Auf diese Weise scannen Sie die Ports, senden den Handshake, und wenn Sie die richtige Antwort erhalten, wissen Sie, auf welchem Port das Arduino ist.
Tags und Links python usb arduino serial-port