¿Puede alguien mostrarme un código de ejemplo completo de python que utiliza pyserial, tengo el paquete y me pregunto cómo enviar los comandos AT y leerlos de nuevo!Ejemplos completos del uso del paquete pySerial
Respuesta
import serial
ser = serial.Serial(0) # open first serial port
print ser.portstr # check which port was really used
ser.write("hello") # write a string
ser.close() # close port
uso http://pyserial.wiki.sourceforge.net/pySerial para más ejemplos
No he utilizado PySerial pero en base a la documentación de la API en http://pyserial.wiki.sourceforge.net/pySerial parece una interfaz muy agradable. Puede valer la pena verificar dos veces la especificación de los comandos AT del dispositivo/radio/lo que sea que esté tratando.
Específicamente, algunos requieren algún período de silencio antes y/o después del comando AT para que entre en modo comando. He encontrado algunos que no les gusta las lecturas de la respuesta sin un poco de retraso primero.
Blog post Serial RS232 connections in Python
import time
import serial
# configure the serial connections (the parameters differs on the device you are connecting to)
ser = serial.Serial(
port='/dev/ttyUSB1',
baudrate=9600,
parity=serial.PARITY_ODD,
stopbits=serial.STOPBITS_TWO,
bytesize=serial.SEVENBITS
)
ser.isOpen()
print 'Enter your commands below.\r\nInsert "exit" to leave the application.'
input=1
while 1 :
# get keyboard input
input = raw_input(">> ")
# Python 3 users
# input = input(">> ")
if input == 'exit':
ser.close()
exit()
else:
# send the character to the device
# (note that I happend a \r\n carriage return and line feed to the characters - this is requested by my device)
ser.write(input + '\r\n')
out = ''
# let's wait one second before reading output (let's give device time to answer)
time.sleep(1)
while ser.inWaiting() > 0:
out += ser.read(1)
if out != '':
print ">>" + out
Recibí un error 'serial.serialutil.SerialException: Port ya está abierto' al ejecutar este código. No estoy seguro de esto, pero creo que el puerto serie se abre automáticamente cuando se define explícitamente como lo ha hecho con 'ser'. Después de comentar la línea 'ser.open()' funcionó. – user3817250
Este comentario es el salvador. –
@ user3817250: Alternativamente, simplemente haga un caso de if alrededor del 'ser.open()' –
http://www.roman10.net/serial-port-communication-in-python/comment-page-1/#comment-1877
#!/usr/bin/python
import serial, time
#initialization and open the port
#possible timeout values:
# 1. None: wait forever, block call
# 2. 0: non-blocking mode, return immediately
# 3. x, x is bigger than 0, float allowed, timeout block call
ser = serial.Serial()
#ser.port = "/dev/ttyUSB0"
ser.port = "/dev/ttyUSB7"
#ser.port = "/dev/ttyS2"
ser.baudrate = 9600
ser.bytesize = serial.EIGHTBITS #number of bits per bytes
ser.parity = serial.PARITY_NONE #set parity check: no parity
ser.stopbits = serial.STOPBITS_ONE #number of stop bits
#ser.timeout = None #block read
ser.timeout = 1 #non-block read
#ser.timeout = 2 #timeout block read
ser.xonxoff = False #disable software flow control
ser.rtscts = False #disable hardware (RTS/CTS) flow control
ser.dsrdtr = False #disable hardware (DSR/DTR) flow control
ser.writeTimeout = 2 #timeout for write
try:
ser.open()
except Exception, e:
print "error open serial port: " + str(e)
exit()
if ser.isOpen():
try:
ser.flushInput() #flush input buffer, discarding all its contents
ser.flushOutput()#flush output buffer, aborting current output
#and discard all that is in buffer
#write data
ser.write("AT+CSQ")
print("write data: AT+CSQ")
time.sleep(0.5) #give the serial port sometime to receive the data
numOfLines = 0
while True:
response = ser.readline()
print("read data: " + response)
numOfLines = numOfLines + 1
if (numOfLines >= 5):
break
ser.close()
except Exception, e1:
print "error communicating...: " + str(e1)
else:
print "cannot open serial port "
- 1. com.sun.awt uso del paquete
- 2. ¿Dónde podría encontrar más ejemplos del uso de PetitParser?
- 3. Python/PySerial y uso de CPU
- 4. Ayuda en el uso del paquete rgl
- 5. Uso del paquete data.table dentro de mi propio paquete
- 6. Estructura del paquete del paquete OSGi
- 7. ¿Hay ejemplos completos que hagan uso de todos los métodos de delegado de NSURLConnection?
- 8. Enterprise Service Bus uso del mundo real o ejemplos
- 9. Ejemplos concretos del uso de árboles de búsqueda binarios?
- 10. Ejemplos de uso creativo y útil del operador en Scala
- 11. ¿Cuáles son algunos ejemplos del uso de Nokogiri?
- 12. Ejemplos del mundo real del patrón Builder
- 13. Kerberos - ejemplos del mundo real?
- 14. Cómo expandir el tamaño del búfer de entrada de pyserial
- 15. ejemplos del mundo real de funciones anidadas
- 16. Estructura del paquete DAO
- 17. Dependencias del paquete R
- 18. ejemplos de uso iTextSharp PdfCopy
- 19. Mal comportamiento del instalador del paquete
- 20. Alias o alias del nombre del paquete
- 21. Uso del controlador Android
- 22. Ejemplos del mundo real del patrón Método de fábrica
- 23. Uso del compilador pypy
- 24. iOS ID del paquete del desarrollador y el nombre de la aplicación ya están en uso
- 25. Ejemplos fáciles del juego para Android
- 26. Ejemplos del excelente código Common Lisp?
- 27. Ejemplos del mundo real de estructuras arbóreas
- 28. ejemplos del mundo real de Rx
- 29. Ejemplos de práctica Prueba del código C#
- 30. Desinstalación del paquete WIX MSI
Ese vínculo se ha roto. Nuevo: http://pythonhosted.org/pyserial/ – MarredCheese