Если подытожить начало темы, то ниже рабочая функция. Но там реализован только один цикл синхронизации, отличии от оригинала. Надо добавить второй, но я запутался во вложенных условиях и фигурных скобках.
Видимо, из-за этого программа иногда пишет Failed!.
Код:
void SYNC_1986() { //функция синхронизации с 1986ВЕ91
Serial.end(); //для смены скорости сперва нужно закрыть!
Serial.begin(9600); //настроили скорость UART на 9600
lcd.clear();
lcd.setCursor(1, 0);
lcd.print("Try to Sync...");
lcd.setCursor(5, 1); //подготовим позицию для печати результата ("Failed!" / "Succes!")
while (Serial.available()) Serial.read(); //вот это работает - очищает буфер UART'перед работой!!!
for (int i = 0; i < 512; i++) {
Serial.write(0); //выдали в порт 512 байт 0х00
}
Serial.flush(); //ждём окончания передачи из буфера
int n = Serial.available();
if (n == 3) {
lcd.print("Succes!");
} else {
lcd.print("Failed!");
delay(1000);
menu = 3; //опять вернулись к файлу прошивки
root = SD.open(name_folder + "/");
SD_card(root);
root.close();
}
}
- - - Добавлено - - -
p.s. Обновил первую мессагу, для какого девайса это пишется.