Прием данных с ПК с помощью Serial.read()
- Войдите на сайт для отправки комментариев
Чт, 30/04/2015 - 14:06
Помогите пжлста,не получается обработать принятые данные, в строковой форме в ардуино,с помощью Serial.read(). Посылаю с ПК букву,принимаю в ардуино, но присвоить эту букву,строковой переменной с помощью serial.read() не получается,выводит числа в диапазоне от 224...,что не так?Как я понимаю он выдает мне код символа из таблицы Аски,или я ошибаюсь,если нет,то как мне преобразовать обратно в букву?
int msg[30]; int t=0; int r=112; void setup() { Serial.begin(9600); } void loop() { while(Serial.available() == 0){ } delay(100); int i=0; while(Serial.available()) { msg[i] = Serial.read(); Serial.println(msg[i]); i++; } }
https://ru.wikipedia.org/wiki/UTF-8
http://i.voenmeh.ru/kafi5/Kam.loc/inform/UTF-8.htm
Так же нужно помнить, что дуиновский монитор не отображает кириллицу.
Соответственно, как int оно и выводится - числом, то есть.
Надо или изменить тип самого массива msg, или преобразовать тип уже после, при вызове println.
Даже когда массив будет иметь правильный тип, судя по кодам:
выводит числа в диапазоне от 224...
буков он все равно не увидет.
Кстати по поводу вывода в сериал русских букв. Когда-то дома написал такой скетчик, что б вывести все доступные символы в мониторе ком-порта, хотел подобрать что-то красивое из нестандартных.
Так он в конце байта выводил без проблем все русские буквы! А на работе стоит та-же версия ардуино, и с этим-же скетчем выводит одни кракозябры.. Очевидно, что винда заведует этим вопросом. Дома win8 на работе win7. Глубоко причину не копал, ибо нет надобности..
Ну да, это уже зависит не от того, кто выводит в Serial-порт, а от того кто выводит на экран принятое из этого порта.
И от конкретного виндоса, конечно, может зависеть. Или, точнее, от его настроек.