Проблемы с кодировкой UTF-8,как сравнить символы Кириллицы?

ForChat
Offline
Зарегистрирован: 01.05.2021
Прошу прощения если вопрос тупой я третий день на Ардуино . Проблема возникла при сравнении символов кириллицы, на сколько я понял я Arduino IDE 
использует кодировку UTF-8 что кодирует кириллицу в два байта и в массив записывает одну букву в два элемента массива.Я разобрался как вывести код буквы..
Вопрос, если можно вывести код символа можно ли ввести символ кириллицы через этот выведенный код а не через обратный слеш как я сделал в конце?

   



char c[] = "Курачоку";//объявляем массив
void setup()
{
  Serial.begin(9600); // Инициируем работу шины UART на скорости 9600 бит/сек.
    int i = 0;
  while (i < sizeof(c) )// проводим через весь массив
        {
    Serial.print("'");  Serial.print((char) c[i]);  Serial.print("' => ");// Отправляем символ из массива как (char) в монитор последовательного порта.
    Serial.println((byte) c[i]);// Отправляем символ как (byte) в монитор последовательного порта.
        i ++;
        }
  Serial.println("\320\200");//определяю символ с кодом через обратный слеш

}

void loop() {


  

}

 

ForChat
Offline
Зарегистрирован: 01.05.2021

Прошу прощения если вопрос тупой я третий день на Ардуино . Проблема возникла при сравнении символов кириллицы, на сколько я понял я Arduino IDE

использует кодировку UTF-8 что кодирует кириллицу в два байта и в массив записывает одну букву в два элемента массива.Я разобрался как вывести код буквы..

Вопрос, если можно вывести код символа можно ли ввести символ кириллицы через этот выведенный код а не через обратный слеш как я сделал в конце?

 

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015
static inline constexpr bool isUnicode(const uint8_t c) { return c == 208 || c == 209; }

void setup(){
	Serial.begin(115200);
	const char * aWord = "Привет!";
	Serial.println(aWord);
	for (uint8_t i = 0; i < strlen(aWord); i++) {
		if (isUnicode(aWord[i])) Serial.write(aWord+i++, 2);
		else Serial.print(aWord[i]);
		Serial.print(' ');
	}
	Serial.println();
	Serial.println("Вот и всё!");
}

void loop() {}
//
//	РЕЗУЛЬТАТ
//
//	Привет!
//	П р и в е т ! 
//	Вот и всё!
ForChat
Offline
Зарегистрирован: 01.05.2021

Спасибо за ответ на обоих форумах)

 

ForChat
Offline
Зарегистрирован: 01.05.2021

Оказалось что не все еще решено .Вот что выдает. Может у меня что то не так с Ардуиной? Или может я неправильно настроил среду , ответьте если не сложно....

 

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

Вы привели верхний левый угол окна монитора порта. А в нижнем правом, у него есть скорость порта. Её не видно, но уверен, что проблема в ней. Она должна совпадать с той, которая задана в строке №4 программы. Поправьте где хотите, это всё равно, но скорости должны совпадать.

ForChat
Offline
Зарегистрирован: 01.05.2021

Да . Действительно все заработало , спасибо еще раз!