Estoy usando un Arduino para detectar usando Python 2.7 en Windows XP, pero la naturaleza no estática de la traducción del puerto USB a serie me está dando dolores de cabeza. Con un puerto serie físico no hay problemas para codificar la posición del puerto, pero el Arduino se está moviendo en función de lo que está o no enchufado en el momento de la instanciación del objeto. ¿Hay alguna forma en Python para que obtenga la dirección del puerto durante la inicialización de cada objeto y la pase a PyVISA o pySerial?Detectar el puerto Arduino en Python
Respuesta
Recomiendo una señal de apretón de manos y escaneando todos los puertos. Por ejemplo, envíe "whoru" desde su secuencia de comandos python al arduiono y tenga un código en el arduiono que responda con "arduino" cuando detecte "whoru" en el puerto serie. De esta forma, escanea los puertos, envía el apretón de manos, y cuando obtienes la respuesta adecuada, sabes en qué puerto está el arduino.
Esto interrumpiría los dispositivos en otros puertos, ya que recibirían una información de la que no sabían el significado. Uno de los dispositivos con los que estoy trabajando es una mierda de equipo, pero no hay nada mejor para hacer el trabajo. Si recibe una mala señal, se bloquea y la única forma de restablecerlo es desenchufando por completo. – Elliot
También sugiero un apretón de manos, pero hazlo la otra ronda. Solo LEA la entrada de todos los puertos serie antes de comenzar su programa. A medida que sube el dispositivo puede hacer que envíe algo así como una señal de ENCENDIDO. cuando su código detecta la señal de ENCENDIDO en ese puerto, haga un apretón de manos.
En pySerial hay una forma bastante oculta de buscar VID/PID en todos los puertos serie (al menos en Windows). Simplemente encuentre el VID/PID del Arduino en propiedades del puerto y póngalo en el código python.
Por supuesto, esto no funcionará si ha conectado múltiples Arduino (/ PID mismo VID) Sistema
import serial.tools.list_ports
for port in list(serial.tools.list_ports.comports()):
if port[2].startswith('USB VID:PID=1234:5678'):
#here you have the right port
- 1. ¿Cómo detectar automáticamente el puerto COM de Arduino?
- 2. Comprueba si el puerto en serie está escuchando
- 3. ¿El puerto serie no funciona?
- 4. Detectar inserción/extracción del puerto serie
- 5. Sondear el teclado (detectar una pulsación de tecla) en python
- 6. Enlace de puerto de Python
- 7. Puerto OAuth para Python 3
- 8. Comunicación USB con Android/Arduino
- 9. Python: urllib.urlopen puerto no numérico
- 10. HTTPS alternativa en Arduino
- 11. Vectores en Arduino
- 12. Arduino Interrupciones en serie
- 13. ¿Cómo se puede depurar el código Arduino que se ejecuta en el hardware Arduino?
- 14. obtener puerto TCP abierto en Python
- 15. Enviando MIDI por el USB usando Arduino
- 16. Arduino stepper
- 17. Transmisión en serie lenta Arduino
- 18. FastCGI en el puerto
- 19. Python: cómo detectar el intérprete de depuración
- 20. Escribir byte en Arduino desde Ruby sobre la serie
- 21. RxTx en Mac: puerto serie ya en uso
- 22. try/catch block en Arduino
- 23. Cambiar el puerto Oracle del puerto 8080
- 24. Escuchando puerto serie en Delphi 7
- 25. Establecer el pin del puerto serie alto usando Python
- 26. ¿Alguien ha intentado utilizar el puerto iSeries Python?
- 27. ¿Hay alguna manera de "compilar" el código de Python en un Arduino (Uno)?
- 28. Problema de Pyserial con Arduino: funciona con el shell Python pero no en un programa
- 29. Control de iluminación con el Arduino
- 30. Usando el iPhone LCD con Arduino
Qué operativo, la versión de Python, y la versión PySerial? ¿Qué has intentado? ¿Qué no está funcionando? Detalles, hombre! – jathanism
Se agregaron cosas sobre la versión y el sistema operativo, pero todo lo que necesita cualquier versión de pyvisa o pyserial como entrada de ubicación es una cadena de texto como 'COM3'. – Elliot