Tengo un letrero Prolite LED que me gusta configurar para mostrar las consultas de búsqueda de desplazamiento de los registros de Apache y otras estadísticas divertidas. El problema es que mi G5 no tiene un puerto serie, así que tengo que usar un dongle de usb a serial. Se muestra como /dev/cu.usbserial y /dev/tty.usbserial.Hablando mediante programación con un puerto serie en OS X o Linux
cuando hago esto todo parece ser miel sobre hojuelas:
stty -f /dev/cu.usbserial
speed 9600 baud;
lflags: -icanon -isig -iexten -echo
iflags: -icrnl -ixon -ixany -imaxbel -brkint
oflags: -opost -onlcr -oxtabs
cflags: cs8 -parenb
Todo funciona también cuando se utiliza la serial port tool a hablar con él.
Si ejecuto este código mientras que la herramienta de puerto en serie mencionada anteriormente, todo también funciona. Pero tan pronto como desconecto la herramienta, la conexión se pierde.
#!/usr/bin/python
import serial
ser = serial.Serial('/dev/cu.usbserial', 9600, timeout=10)
ser.write("<ID01><PA> \r\n")
read_chars = ser.read(20)
print read_chars
ser.close()
Entonces la pregunta es, ¿qué magia qué necesito realizar para comenzar a hablar con el puerto serie sin la herramienta de puerto serie? ¿Es eso un problema de permisos? Además, ¿cuál es la diferencia entre /dev/cu.usbserial y /dev/tty.usbserial?
No, no hay números de serie. El problema es que el problema persiste incluso con sudo-ejecutar el script de python, y lo único que lo hace funcionar es abrir la conexión en la herramienta de GUI que mencioné.
La semana pasada escribí una pequeña utilidad de Python para ayudarme a depurar una aplicación C incrustada al leer la información de depuración de un dongle USB-Serial, así que me gustaría pensar que entiendo muy bien PySerial. Alguna información adicional puede ayudar a diagnosticar el problema: * ¿Qué controlador USB-Serial está usando? * ¿Estás seguro de haber configurado todas las opciones en serie (velocidad en baudios, control de flujo, paridad, bits de parada, etc.) correctamente antes de intentar abrir la conexión en serie de Python? * ¿Qué versión de PySerial estás usando? – Matt
No ve ningún número de serie después de ellos, ¿verdad? Tales como: /dev/cu.usbserial-xxxxxxxxA /dev/tty.usbserial-xxxxxxxxA /dev/cu.usbserial-xxxxxxxxB /dev/tty.usbserial-xxxxxxxxB Mi otro problema fue tal vez que haya un problema de permisos de pitón hablando con el Puerto serial. ¿Sabes en qué usuario se está ejecutando tu instancia de python? Y tal vez, ¿qué roles tiene? –