Добавил проверку на правильность соответствия приёма трёх байт. Вот так заработает?
Код:bool SYNC_1986_handshake() { while (Serial.available()) Serial.read(); for (int i = 0; i < 512; i++) { Serial.write(0); } Serial.flush(); const int NumBytesToReceive = 3; // количество байт которые ждем в ответ int syncSuccess1986 [3] = {0x0D, 0x0A, 0x3E}; //для проверки ответа от 1986ВЕ91 int numBytesReceived = 0; // здесь храним количество принятых байт for (int istep = 0; istep < 5; ++istep) // делаем несколько попыток считать ответ { while (Serial.available() && numBytesReceived < NumBytesToReceive) // читаем все что уже есть во входном буфере { byte receivedByte = Serial.read(); // можно сохранить это где нибудь чтобы проверить значение if (receivedByte != syncSuccess1986[numBytesReceived]); //парсим принятый байт на правильное совпадение с ответом 1986 { return false; //байт не совпал - выходим с ошибкой } ++numBytesReceived; // храним количество принятых байт } if (numBytesReceived == NumBytesToReceive) // получили все что нужно { return true; // возвращаем успех } delay(10); } return false; // возвращаем неудачу }




Ответить с цитированием