Главная chevron_right Функции chevron_right Символы chevron_right isAscii()

isAscii()

isAscii() проверяет, входит ли символ в таблицу ASCII (коды 0–127), и возвращает true или false — удобно для фильтрации данных из Serial.

Полная статья

Описание

Функция isAscii(thisChar) проверяет, входит ли переданный символ в таблицу ASCII — то есть имеет ли его код значение от 0 до 127. Это полезно, когда нужно убедиться, что данные, пришедшие по Serial или из другого источника, содержат только стандартные ASCII-символы, а не расширенные коды (128–255), которые могут вызывать непредсказуемое поведение в строковых функциях.

Синтаксис

Используйте следующую функцию для проверки переменной типа char:

isAscii(thisChar)

Параметры

thisChar: символ, который нужно проверить. Допустимый тип данных: char.

Возвращает

Функция возвращает true, если символ является ASCII-символом (код от 0 до 127). В противном случае возвращается false.

Пример кода

char myChar = 'A';  // попробуйте 'é' как не-ASCII символ

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

  if (isAscii(myChar)) {  // проверяет, является ли myChar символом ASCII
    Serial.println("The character is ASCII");
  } else {
    Serial.println("The character is not ASCII");
  }
}

void loop() {
}

Где применяется

  • Фильтрация входящих данных по Serial — перед обработкой строки можно отсеять байты с кодами выше 127, которые могут появляться из-за помех или неверной кодировки.
  • Валидация пользовательского ввода — если скетч принимает команды в текстовом виде, isAscii() помогает убедиться, что каждый символ команды корректен.
  • Работа с текстовыми протоколами — при разборе ответов от модулей (GSM, Wi-Fi и т. п.) удобно проверять, что принятые байты действительно являются читаемым текстом.

Практические замечания

  • Функция проверяет только диапазон кодов 0–127. Управляющие символы (например, \n, \r, \t) тоже считаются ASCII и вернут true.
  • Если переменная типа char содержит отрицательное значение (что возможно, так как char по умолчанию знаковый на большинстве платформ Arduino), функция корректно определит, что такой символ не является ASCII.
  • Для проверки только печатаемых символов (буквы, цифры, знаки препинания) используйте isPrint() — она исключает управляющие коды.
  • isAscii() не блокирует выполнение программы и работает мгновенно — её безопасно вызывать внутри цикла обработки данных.
  • Функция входит в стандартный набор символьных функций Arduino и не требует подключения дополнительных библиотек.

Полезные материалы