Чтение сериала некрасивым способом

dim3740
dim3740 аватар
Offline
Зарегистрирован: 25.03.2015

Помогите сделать код более правильным.  У меня он работает, хотя не должен был бы...

Главное, что переключатель по разным стартовым кодам срабатывал по-разному

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;
      }
    }
  }
}

 

mykaida
mykaida аватар
Offline
Зарегистрирован: 12.07.2018

Программа одноразовая? Как инициируется FLink?

dim3740
dim3740 аватар
Offline
Зарегистрирован: 25.03.2015

Flink взводится кнопкой приемного устройства, как готовность к обмену.

Передатчик может посылать "стартовые" коды разные, по которым происходят разные функции в приемнике. Также передатчик заканчивает обмен по коду END

asam
asam аватар
Offline
Зарегистрирован: 12.12.2018

Проверять наличие данных (Serial.available()) надо перед каждым Serial.read(); 

Насчет "красивости" - и задача довольно туманно описана и полного кода нет.

Voodoo Doll
Voodoo Doll аватар
Offline
Зарегистрирован: 18.09.2016

Вот это не глючило и выглядит +/- компактно.

DISCLAIMER: THIS CODE IS SUPPLIES "AS IS" WITHOUT ANY WARRANTIES OF ANY KIND, EITHER EXPRESS OR IMPLIED.

упд: все непредусмотренные символы эта херня пропускает.