Как записать несколько символов в 1 переменную из Serial?

Тема в разделе "Arduino & Shields", создана пользователем PerfectNumber13, 19 июн 2013.

  1. Как записать несколько символов в 1 переменную из Serial?
    Попробовал вот так:
    Код (C):

    void setup()
    {
      Serial.begin(9600);
    }

    void loop(){
      if (Serial.available())
      {
        char val = Serial.read();
        Serial.println(val);
        if(val == 555){
          digitalWrite(13,HIGH);
        }
      }
    }
     
    Но если послать на порт "123" в ответ он присылает "1", "2", "3".
    Как записать в переменную val - символы с порта (вместе "123"). Например: char val = 123
     
  2. int val = Serial.parseInt(); - не подходит, т.к. у него есть задержка примерно в 1 секунду, а мне нужно, чтобы данные передавались быстро...
     
  3. Megakoteyka

    Megakoteyka Оракул Модератор

    Нужно послать данные в виде байта, а не текста "123". Воспользуйтесь любым сторонним монитором COM-порта - обычно они поддерживают возможность отправки данных в любом виде и еще целую кучу полезных фишек.
    Я использую CommTest - найдете в интернете без проблем, очень рекомендую.
     
  4. Megakoteyka

    Megakoteyka Оракул Модератор

    И по поводу Вашего кода - переменная типа char никогда не будет равна 555 :)
    От 0 до 255 - байт. Если нужно передать большое число - передавайте 2 байта и на приеме склеивайте их в int.

    Передавать так:
    Код (C):
    int value = 12345;

    char loByte = (char)value;
    char hiByte = (char)(value >> 8);

    Serial.write(loByte);
    Serial.write(hiByte);

    Принимать так:
    Код (C):
    char loByte = Serial.read();
    char hiByte = Serial.read();

    int value = (hiByte << 8) | loByte;
     
    nailxx и Unixon нравится это.