Problema con el tiempo de lectura de Pyserial

1

Estoy construyendo una red RS485 con rpi3 como maestro y un montón de c51 mcu como esclavos. Después de enviar una dirección, el maestro espera a que el esclavo responda y luego comienza a enviar datos. Estoy usando Pyserial en Pi y hace un buen trabajo.

Esta es la parte de la clase

class Rs485(serial.Serial):
def __init__(self,en_pin):
    serial.Serial.__init__(self, '/dev/ttyAMA0', baudrate=9600, write_timeout=3.0)
    self.en_pin = en_pin
    self.data_buf = 0
    self.parity =  serial.PARITY_SPACE
    self.init()
    self.timeout = 0.03

Esta es la parte donde se llama lectura

def receive(self):
    ts.output(0, self.en_pin)
    data_buf = self.read()
    ts.output(1, self.en_pin)
    return data_buf

Sin embargo, al intentar mejorar la eficiencia de la transmisión, descubrí que hay un retraso inesperado después de cada vez que se llama a serial.read. Las líneas ts.output se utilizan para configurar el pin de habilitación de max485 en modo de recepción y casi no cuestan tiempo. He confirmado que la línea self-read cuesta aproximadamente 5.7ms.

Mis preguntas son:

  1. ¿Por qué el retraso?
  2. ¿Alguna sugerencia sobre cómo podría reducir el retraso?

¡Gracias!

    
pregunta Gordon

0 respuestas

Lea otras preguntas en las etiquetas