pySerial: flu sh vs reset_input_buffer + reset_output_buffer - PullRequest
0 голосов
/ 20 марта 2020

Я пытаюсь использовать pySerial==3.4, и мне не хватает документации по serial.Serial.flush():

Flu sh файловоподобных объектов. В этом случае подождите, пока все данные не будут записаны.

Источник


Вопросы

  • Что такое «файлоподобный объект»?
  • Что сбрасывается?
  • Когда можно использовать flush вместо простого индивидуального сброса буферов ввода / вывода?
serial = Serial("COM3")

# Option 1
serial.flush()

# Option 2
serial.reset_input_buffer()
serial.reset_output_buffer()

Актуальные вопросы

1 Ответ

1 голос
/ 20 марта 2020

Это выглядит так:

Что такое "файлоподобный объект"?

Что такое файловоподобный объект в Python ?

Файловидные объекты - это, в основном, объекты StringIO, подключенные сокеты и др. Фактические файловые объекты. Если все идет хорошо, urllib.urlopen () также возвращает объект в виде файла, поддерживающий необходимые методы.

файлоподобный объект
Синоним файлового объекта.

объект файла
Объект, предоставляющий файлово-ориентированный API (с такими методами, как read () или write ()) базовому ресурсу. В зависимости от того, как он был создан, файловый объект может обеспечивать доступ к реальному файлу на диске или к другому типу устройства хранения или связи (например, стандартный ввод / вывод, буферы в памяти, сокеты, каналы и т. Д. * 1068). *.). Файловые объекты также называют файловыми объектами или потоками.

На самом деле существует три категории файловых объектов: необработанные двоичные файлы, буферизованные двоичные файлы и текстовые файлы. Их интерфейсы определены в модуле io. Канонический способ создания файлового объекта - использование функции open ().

io - Основные инструменты для работы с потоками

Модуль io предоставляет основные возможности Python для работы с различными типами ввода / вывода. Существует три основных типа ввода / вывода: текстовый ввод / вывод, двоичный ввод / вывод и необработанный ввод / вывод. Это общие c категории, и для каждой из них можно использовать различные резервные магазины. Конкретный объект, принадлежащий любой из этих категорий, называется файловым объектом. Другими общими терминами являются потоковые и файловые объекты.

Что сбрасывается?

Данные хранятся в выходном буфере.

Когда нужно использовать flu sh, а не просто индивидуально сбрасывать буферы ввода / вывода?

Есть данные, которые были выведены (write()) и он будет вызван перед закрытием.

flush() не имеет ничего общего с входным буфером или reset_input_buffer().

flush() имеет функцию, отличную от reset_output_buffer().
flush() отправляет все данные в выходном буфере одноранговому узлу, тогда как reset_output_buffer() отбрасывает данные в выходном буфере.

reset_output_buffer ()
Очистить выходной буфер, отменить текущий вывод и удалить все, что находится в буфере.

Обратите внимание, что для некоторых последовательных USB-адаптеров это может быть только sh буфер ОС, а не все данные, которые могут присутствовать в USB-части.

...