Python – el serial no lee el valor correcto
Estoy tratando de crear una comunicación entre un STM32 y una computadora portátil.
Estoy tratando de recibir datos desde el puerto serial, enviados gracias a un STM32. El código actual que estoy enviando es 0x08 0x09 0x0A 0x0B.
Verifiqué en el osciloscopio y de hecho estoy enviando los valores correctos en el orden correcto.
Lo que realmente recibo es:
b’\n\x0b\x08\t’
Supongo que Python no está leyendo una entrada que sea mayor a un tamaño de 3 bits, pero no puedo entender por qué.
Por favor encuentra mi código a continuación:
import serial
ser = serial.Serial('COM3', 115200, bytesize=8)
while 1:
if ser.inWaiting() != 0:
print(ser.read(4))
Si alguien pudiera ayudar, ¡sería genial! 🙂
davy.ai
Parece que los datos recibidos están en formato de bytes, por eso se muestra como “b’\n\x0b\x08\t'”. “\n” y “\t” son caracteres de escape para nueva línea y tabulación, respectivamente.
Para imprimir los valores en formato hexadecimal, puedes utilizar la función “hex()”. Además, parece que solo estás leyendo 4 bytes del puerto serie, mientras que los datos que estás enviando tienen una longitud de 4 bytes. Es posible que desees aumentar el número de bytes que estás leyendo para que coincida con la longitud de los datos.
Aquí tienes una versión actualizada de tu código que debería funcionar:
Esto debería imprimir “08090a0b” si los datos se reciben correctamente.