Тут у меня возникло не большое затруднение. Вероятно я не совсем понимаю как должна работать эта функция но во к примеру код: Код (Text): void setup() { Serial.begin(9600); } void loop() { if(Serial.available() > 0) { delay(50); char c = Serial.read(); Serial.println(c); Serial.flush(); } } В итоге программа послушно выводит все символы один за одним, когда по идее, должна считать 1 символ а остальное скинуть. Что я только не делал, как только не игрался, никак не получается слить буфер. Использую UNO R3, софт Arduino 1.0.4 Подскажите, может я что то не верно понимаю про буфер.
Я это читал, только не совсем понял что именно имелось ввиду в этих строках. И имеют ли эти строки отношение к моему вопросу
В библиотеке Serial версии 022 функция flush сбрасывала все не отправленные данные, находящиеся на момент вызова в буфере отправки. В следующих версиях ее цель изменилась: ждать до тех пор, пока последний байт из выходного буфера не будет передан. Чтобы слить буфер, вам нужно определить новый метод в классе HardwareSerial. Можно залезть в стандартную библиотеку (это не сложно, но при переходе на следующую версию IDE может возникнуть путаница) или создать свой класс mySerial, например, путем наследования стандартного класса. Это не так сложно, как кажется
Не стоит качать старую. Просто замените ваш Код (Text): Serial.flush(); на: Код (Text): while (Serial.available()) Serial.read();
Его не убрали, а изменили семантику (смысл). flush всю жизнь означал «расквитаться с очередями, отправить всё из буферов куда нужно», а не «забыть всё, что в буферах». Так `flush` имеет тот же смысл, что и в других библиотеках.