http://wm-monitoring.ru/ ')) {alert('Спасибо за то что установили нашу кнопку! =)');} else {alert('Очень жаль! =(');}"> http://wm-monitoring.ru/

Arduino string и работа со строками в ардуино. Создание срок из char

Опубликовано: 24.08.2018

видео Arduino string и работа со строками в ардуино. Создание срок из char

Передача строки (string) по Nrf24l01

Arduino String — основная библиотека для работы со строками в ардуино. С ее помощью существенно упрощается использование массивов символов и строк в скетче. Объект типа String содержит множество полезных функций для создания и объединения строк, преобразований string to int (парсинг чисел) и int to string (форматирование чисел). Строки используются практически в любых проектах, поэтому и вероятность встретить String в скетче очень высока. В этой статье мы постараемся рассмотреть основные методы этого класса и наиболее часто возникающие ситуации.



Для чего нужен String в ардуино

Стандартным способом работы со строками в языке C является использование массива символов. Это все означало необходимость работы с указателями и понимания адресной арифметики. В ардуино и C++ у программистов появилось гораздо больше возможностей. Все «низкоуровневые» операции по работе со строкой выделены в отдельный класс, а для основных операций даже переопределены операторы. Например, для объединения срок мы просто используем хорошо знакомый знак «+», а не зубодробильные функции типа malloc и strcpy. С помощью String мы работаем со строкой как с целым объектом, а не рассматриваем его как массив символов. Это позволяет сосредоточиться на логике скетча, а не деталях реализации хранения символов в памяти.


Введение в программирование: Переменные #2

Естественно, у любого «упрощения» всегда есть свои подводные камни. String всегда использует больше оперативной памяти и в некоторых случаях функции класса могут медленнее обрабатываться. Поэтому в реальных больших проектах придется тщательно взвешивать все плюсы и минусы и не забывать, что никто не мешает нам работать со строками в стиле С. Все обычные функции обработки массивов char остаются в нашем арсенале и в arduino.


Логирование данных и оптимизация скетчей для Arduino

Создание строк в ардуино с помощью String

В ардуино у нас есть несколько способов создать строку, приведем основные:

char myCharStr [ ] = «Start»;  — массив типа char с завершающим пустым символом; String myStr = «Start»; — объявляем переменную, создаем экземпляр класса String и записываем в него константу-строку. String myStr = String(«Start»); — аналогичен предыдущему: создаем строку из константы String myStr(myCharStr); — создаем объект класса String с помощью конструктра, принимающего на вход массив типа char и создающего из char String. String myStr = String(50); — создаем строку из целого числа (преобразование int to string). String myStr = String(30, H); — создаем строку — представление числа в 16-чной системе (HEX to String) String myStr = String(16, B); — создаем строку — представление числа в двоичной системе (Byte to String).

Каждый раз, когда мы объявляем в коде строку с использованием двойных кавычек, мы создаем неявный объект класса String, являющийся константой. При этом обязательно использование именно двойных кавычек: «String» — это строка. Одинарные кавычки нужны для обозначения отдельных символов. ‘S’ — это символ.

Функции и методы класса String

Для работы со строками в String предусмотрено множество полезных функций. Приведем краткое описание каждой из них:

String() – конструктор, создает элемент класса данных string. Возвращаемого значения нет. Есть множество вариантов, позволяющих создавать String из строк, символов, числе разных форматов. charAt() возвращает указанный в строке элемент. Возвращаемое значение – n-ный символ строки. compareTo() – функция нужна для проверки двух строк на равенство и позволяет выявить, какая из них идет раньше по алфавиту. Возвращаемые значения: отрицательное число, если строка 1 идет раньше строки 2 по алфавиту; 0 – при эквивалентности двух строк; положительное число, если вторая строка идет раньше первой в алфавитном порядке. concat() — функция, которая объединяет две строки в одну. Итог сложения строк объединяется в новый объект String. startsWith() – функция показывает, начинается ли строка с символа, указанного во второй строке. Возвращаемое значение: true, если строка начинается с символа из второй строки, в ином случае false. endsWith() — работает так же, как и startsWith(), но проверяет уже окончание строки. Также возвращает значения true и false. equals() — сравнивает две строки с учетом регистра, т.е. строки «start» и «START» не будут считаться эквивалентными. Возвращаемые значения: true при эквивалентности, false в ином случае. equalsIgnoreCase() – похожа на equals, только эта функция не чувствительна к регистру символов. getBytes() – позволяет скопировать символы указанной строки в буфер. indexOf() —  выполняет поиск символа в строке с начала. Возвращает значение индекса подстроки val или -1, если подстрока не обнаружена. lastIndexOf() –выполняет поиск символа в строке с конца. length() – указывает длину строки в символах без учета завершающего нулевого символа. replace() – заменяет в строке вхождения определенного символа на другой. setCharAt() — изменяет нужный символ в строке. substring() – возвращает подстроку. Может принимать два значения – начальный и конечный индексы. Первый является включительным, т.е. соответствующий ему элемент будет включаться в строку, второй – не является им. toCharArray() – копирует элементы строки в буфер. toLowerCase() – возвращает строку, которая записана в нижнем регистре. toUpperCase() – возвращает записанную в верхнем регистре строку. toInt() – позволяет преобразовать строку в число (целое). При наличии в строке не целочисленных значений функция прерывает преобразование. trim() – отбрасывает ненужные пробелы в начале и в конце строки.

Объединение строк Arduino

Объединить две строки в одну можно различными способами. Эта операция также называется конкатенацией. В ее результате получается новый объект String, состоящий из двух соединенных строк. Добавить к строке можно различные символы:

String3 = string1 + 111; // позволяет прибавить к строке числовую константу. Число должно быть целым. String3 = string1 + 111111111; // добавляет к строке длинное целое число String3 = string1 + ‘А’; // добавляет символ к строке String3 = string1 +  «aaa»;// добавляет строковую постоянную. String3 = string1 + string2; // объединяет две строки вместе.

Важно осторожно объединять две строки из разных типов данных, так как это может привести к ошибке или неправильному результату.

Arduino string to int и string to float

Для конвертации целочисленных значений string to int используется функция toInt().

String MyStr = «111»;

int x = MyStr.toInt();

Если нужно конвертировать объект с плавающей запятой, применяется функция atof().

String MyStr = «11.111»;

char myStr1[10];

MyStr.toCharArray(myStr1, MyStr.length());    // копируется String в массив myStr1

float x = atof(myStr1);  //  преобразование в float

Преобразование int to string

Для создания строки из числа не требуется делать особых телодвижений. Мы можем просто объединить строку и число:

int i = 50;

String str = «Строка номер «+ i;

Можем создать объект, используя конструктор

String str = String(50);

Можем объединить оба способа:

String str = «Строка номер «+ String(50);

 

Преобразование String в массив char

Тип данных Char позволяет объявлять текстовые строки несколькими способами:

char myStr1[10]; — в данном случае объявлен массив определенного размера. char myStr2 [6] = {‘a’, b, ‘c’, ‘d’, ‘e’}; — объявлен сам массив. Конечный символ не записанявно, его прибавит сам компилятор. char myStr3[6] = {‘a’, b, ‘c’, ‘d’, ‘e’’/0’}; — объявлен массив, при этом в конце прописан признак окончания строки. char myStr4 [ ] = “abcde”; — инициализация массива строковой постоянной. Размер и завершающий символ добавляются автоматически компилятором. char myStr5 [6 ] = “abcde”; — инициализация массива с точным указанием его размера. char myStr 6[30 ] = “abcde”; — аналогично, но размер указан больше для возможности использования строк большей длины.

Еще раз напомним, что в типе данных char строковые константы нужно записывать в двойные кавычки «Abcde», а одиночные символы – в одинарные ‘a’.

Конвертировать строку в массив сhar array можно при помощи следующего кода:

String stringVar = «111»;

char charBufVar[20];

stringVar.toCharArray(charBufVar, 20);

Можно сделать обратное преобразование — char to string .

char[] chArray = «start»;

String str(chArray);

Пример преобразования String to const char* . Указание звездочкой char*означает, что это массив указателей.

String stringVar=string (`start);

Char charVar[ sizeof [stringVar)];

stringVar.toCharArray(charVar, sizeof(charVar));

Заключение о String и ардуино

В этой статье мы рассмотрели основные вопросы использования String для работы со строками arduino. Как показывают примеры, ничего страшного и сложного в этом классе нет. Более того, зачастую мы можем даже не догадываться, что работаем с классом String: мы просто создаем переменную нужного типа, присваиваем ей строку в двойных кавычках. Создав строку, мы используем все возможности библиотеки String: можем без проблем модифицировать строку, объединять строки, преобразовывать string в int и обратно, а также делать множество других операций с помощью методов класса.

В ситуациях, когда скетч большой и перед нами встает дефицит памяти, использовать String нужно осторожно, по возможности заменяя на char*. Впрочем, в большинстве первых проектов начинающего ардуинщика таких ситуаций не много, поэтому рекомендуем использовать String без опаски — это предотвратит появление ошибок адресной арифметики, возникающих при работе с массивами char.

Карта
rss