interfaz - python arduino write
Comprender los personajes recibidos de Arduino (2)
El prefijo b
en Python 3 solo significa que es un literal de bytes
. No es parte de la salida, eso es solo decirle el tipo.
El /r/n
es un común Carriage-Return y Newline final de línea caracteres. Puede eliminar eso de su cadena llamando a strip()
.
Como se devuelven los números de coma flotante, supongo que querrá usarlos de alguna forma después de que se lean también:
import serial
ser = serial.Serial(''/dev/ttyACM0'', 9600)
while True:
value = float(ser.readline().strip())
print ''New value is {0:0.2f}''.format(value)
Ver también:
Tengo una placa Arduino que envía datos a través de un puerto serie y una pieza de código Python que lee esos datos. La placa Arduino simplemente envía la temperatura que lee desde un sensor TMP36 y cuando reviso el puerto usando el monitor de puerto que viene con el IDE de Arduino, veo esto:
20.3
20.3
20.2
20.2
...
Lo cual es perfectamente correcto. Ahora, cuando leo el puerto serie usando Python, obtengo esto:
b''20.32/r/n''
b''20.32/r/n''
b''20.32/r/n''
b''20.80/r/n''
...
¿Qué hace esa cosa b ''''? ¿Cómo puedo tratar la cuerda así que solo muestro los números correctamente?
Aquí está el código que estoy usando:
import serial
ser = serial.Serial(''/dev/ttyACM0'', 9600)
while True:
message = ser.readline()
print(message)
Disculpas si es una pregunta tonta, pero soy nuevo en Arduino, Python y programación en serie :)
También puede usar decode()
y strip()
de una vez.
b''20.32/r/n''.decode().strip(''/r/n'')
Te regalaré:
''20.32''