чтение из Serial

Тема в разделе "Флудилка", создана пользователем Redn, 6 дек 2014.

  1. Redn

    Redn Гик

    можите подсказать как сделать код который будет чтитать из serial порта двух значные числа ? тоесть если ему приходит число 11 он прочитал его как 11 а не как 1 и 1 по отдельности и выполнил команду номер 11 а не 2 раза выполнил команду 1
     
  2. geher

    geher Гуру

    Надо просто установить формат передачи, позволяющий однозначно разбирать команды.
    В частности, каждая посылка должна начинаться и заканчиваться определенным кодом, чтобы можно было понять, где начало и завершение очередной команды.
    Для простого случая, когда просто текстом передаются номера команд без параметров, будет достаточно ввести символ-разделитель, который будет означать завершение очередного числа, и который будет передаваться сразу за числом-командой.
    Например, "1;11;" - передача сначала команды 1, потом 11. Разделитель - символ ';'
    Прием можно осуществлять при помощи простой конструкции
    Код (Text):
    if (Serial.available()){
          c=Serial.parseInt();
    }
    switch (c){
       case 1:
          ...
          break;
       case 11:
          ...
          break;
    }
    При этом точку с запятой после 11 передавать обязательно, чтобы parseInt не задерживался на достаточно долгий по меркам МК период, ожидая завершения передачи числа.
     
  3. в сериал приходит текст, тобиж символы типа char, если нужно передать число, то получаем из сериал функцией Serial.parseInt();