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 и не требует подключения дополнительных библиотек.