Serial.read () для int - PullRequest
       5

Serial.read () для int

0 голосов
/ 16 марта 2020

Что именно происходит здесь, когда последовательные данные считываются в байтах в целое число (кажется, что оно не преобразуется в целое число), а затем проверяются, не совпадает ли оно с «1»? Почему это работает? Как это, если возвращать истину? И в чем разница между «1» и «1» (разве они не строки)?

SoftwareSerial bluetooth(2, 3);

void loop()
{
  if (bluetooth.available())
  {
    int number = bluetooth.read();

    //how is number (49 in bytes) identical to '1'
    if (number == '1')
    {
      Serial.print(number);
      Serial.print(" : ");
      Serial.println("on");
    }
  }
}

1 Ответ

1 голос
/ 17 марта 2020

Одно значение считывается и сохраняется в number. Значение сравнивается с символом '1' . В ASCII символ '1' имеет десятичное значение 49.

Полагаю, этот пример был бы более понятным, если бы автор объявил number как char ( или даже byte) вместо int. Я предполагаю, что read() возвращает только 8-битное значение.

Для вашего последнего вопроса: "это строка" но 'z' это один символ.

...