es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

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! 🙂

Tags:  , , ,

Answer

  1. Avatar for 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:

    import serial
    
    ser = serial.Serial('COM3', 115200, bytesize=8)
    
    while True:
        if ser.in_waiting > 0:
            data = ser.read(4)
            print(data.hex())
    

    Esto debería imprimir “08090a0b” si los datos se reciben correctamente.

Comments are closed.