Чтение сериала некрасивым способом
- Войдите на сайт для отправки комментариев
Ср, 27/10/2021 - 14:46
Помогите сделать код более правильным. У меня он работает, хотя не должен был бы...
Главное, что переключатель по разным стартовым кодам срабатывал по-разному
void loop() { while (FLink == 1) // пока не получим код END 134 { if (Serial.available() > 0) { byte ff = Serial.read(); switch (ff) { case 131: // начало чтения for (int u = 0; u < EEPROM_BYTES_COUNT; u++) { body[u] = Serial.read(); } break; case 134: FLink = 0; break; } } } }
Программа одноразовая? Как инициируется FLink?
Flink взводится кнопкой приемного устройства, как готовность к обмену.
Передатчик может посылать "стартовые" коды разные, по которым происходят разные функции в приемнике. Также передатчик заканчивает обмен по коду END
Проверять наличие данных (
Serial
.available()
) надо перед каждымSerial
.read();
Насчет "красивости" - и задача довольно туманно описана и полного кода нет.
Вот это не глючило и выглядит +/- компактно.
DISCLAIMER: THIS CODE IS SUPPLIES "AS IS" WITHOUT ANY WARRANTIES OF ANY KIND, EITHER EXPRESS OR IMPLIED.
упд: все непредусмотренные символы эта херня пропускает.