Когда нужно очищать буферы Pyserial? - PullRequest
0 голосов
/ 08 октября 2018

Я работаю с Pyserial и у меня есть вопрос, касающийся лучших методов очистки входных и выходных буферов.В настоящее время я сбрасываю буфер вывода перед отправкой команды и сбрасываю ввод перед чтением ответа.Кажется, я иногда пропускаю начало ответа, поэтому я думаю об изменении моей программы для сброса буфера ввода перед отправкой команды.Я также рассматриваю возможность соединения своих функций отправки и получения, чтобы при отправке всегда вызывался прием и, как мы надеемся, ужесточился цикл.

    def send_cmd(self, cmd_to_send):
        self.ser.reset_output_buffer()
        self.ser.write(cmd_to_send)

    def receive_cmd(self):
        self.ser.reset_input_buffer()
        # Read logic below

С учетом перехода на что-то вроде этого

    def send_cmd(self, cmd_to_send):
        self.ser.reset_output_buffer()
        self.ser.reset_input_buffer()
        self.ser.write(cmd_to_send)
        self.receive_cmd()

    def receive_cmd(self):
        # Read logic below

1 Ответ

0 голосов
/ 08 октября 2018

В конфигурации порта ключ timeout позволяет подождать некоторое время при каждой связи с портом.

Обычно я использую этот параметр для предотвращения проблем с буфером порта.Попробуйте это и, возможно, нет необходимости промывать.

...