Serial.flush() уточнение

Rootware
Offline
Зарегистрирован: 11.01.2018

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

И ещё. Есть ли какой сакральный смысл в этой команде? Например, случаи когда она очень полезна. Хотелось бы узнать актуальность её в последних версиях, т.к. в том же официальном мануале сказано, что она раньше подчищала буфер.

Спасибо.

b707
Offline
Зарегистрирован: 26.05.2017

а вам надо ждать или чистить?

Если чистить - используйте Serial.read() в цикле или Serial.readString()

Rootware
Offline
Зарегистрирован: 11.01.2018

Мне хотелось бы знать зачем она вообще нужна на сегодняшний день.

Буфер чтения я опустошаю в цикле. По определённым условиям из данных отправляю ответы. Так вот и встал вопрос "А зачем она нужна"?

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

К принимаемым данным она не имеет никакого отношения.

Что касается отправляемых данных, то она дожидается пока ВСЁ не будет физически отправлено и ТХ буфер не станет пуст.

Для чего? ну, 100500 применений: борьба с переполнением буфера, начинать какое-то действие только после того, как другое устройство гарантировано получило наши данные и т.п.

Rootware
Offline
Зарегистрирован: 11.01.2018

Спасибо. Это то что нужно было узнать.