Как считать данные с терминала, Serial.read()
- Войдите на сайт для отправки комментариев
Чт, 07/04/2016 - 16:39
Добрый день и всех с праздником Благовещения!
Такой вопрос. Отлаживаю скетч и пока не пришли датчики, надо как-то присваивать переменным числовые значения. Других вариантов, кроме терминала - не вижу. Но есть проблема: не пойму как.
Главное дело, в каком-то скетче или даже примере, я точно видел что можно читать с терминала, но теперь не найду этот пример.
Подскажите как это делается!
http://arduino.ru/Reference/Serial/Available
http://pashkevich.me/article/6.html
http://podrugomu.com/node/987
http://wiki.amperka.ru/%D0%B2%D0%B8%D0%B4%D0%B5%D0%BE%D1%83%D1%80%D0%BE%D0%BA%D0%B8:6-serial-%D0%B8-processing
Счя разберем. Спасибо.
--------------------------
Мда, несколько замысловато, конечно - передавать не сами введенные символы, а их байтовые значения. Чувствую себя Джеймсом Бондом, которому предстоит написать процедуру расшифровки полученых по "Serial.read()" чисел... Но ссылки оказались очень полезными.
А к чему был скетч с зажиганием светодиодов с пульта?
---------------------
Опачки, а вот пришло же и готовое решение! http://podrugomu.com/node/987
Спасибо, Jeka_M!!! Это целый доллар в мою копилочку навыков !
Ничего не поучатся пока что. Есть такой скетч:
Вот после Serial.println ("Data converted:"); пишет всякую хрень уже.
Как правильно преобразовать "char" в "int" ?
Как правильно преобразовать "char" в "int" ?
Что Вы понимаете под "преобразовать"?
Вообще-то char это целое число, его не надо преобразоавывать, просто присвойте переменной типа int.
Или Вам надо делать преобразования по какому-то правилу? например '1'->1, '2'->2 или там 'A'->1, 'B'->2 или ещё по какому.
'1'->1, '2'->2. Только цифры.
'1'->1, '2'->2. Только цифры.
Минусуйте '0' и получите цифру, т.е.:
'1'->1, '2'->2. Только цифры.
На сколько я понял поставленную задачу можно решить при помощи этого http://arduino.ua/ru/prog/StringToInt. К сожалению у меня сейчас плата не под рукой, так что не могу сказать правильное это решение или нет.
'1'->1, '2'->2. Только цифры.
Минусуйте '0' и получите цифру, т.е.:
Ах вот в чем дело! Надо убрать "конец передачи", или как называется последний ноль - не помню. Спасибо.
На сколько я понял поставленную задачу можно решить при помощи этого http://arduino.ua/ru/prog/StringToInt. К сожалению у меня сейчас плата не под рукой, так что не могу сказать правильное это решение или нет.
Судя по названию: "StringToInt" - что-то очень похожее.
'1'->1, '2'->2. Только цифры.
На сколько я понял поставленную задачу можно решить при помощи этого http://arduino.ua/ru/prog/StringToInt. К сожалению у меня сейчас плата не под рукой, так что не могу сказать правильное это решение или нет.
На гроизонте воробей, расчехляй царь-пушку!
Правильно же написали. Если у Вас есть переменная типа char в которой сидит символ цифры ('0' или '1', или '2', ...), чтобы получить число, достаточно вычесть из него символ '0'
Типа: "А ларчик - просто открывался" ...
Ах вот в чем дело! Надо убрать "конец передачи", или как называется последний ноль - не помню. Спасибо.
Нет, не то. Я надеюсь, что вы это уже поняли. Но я постараюсь поставить логическую точку этим простым объяснением (может кто-то еще заполнит маленький пробел в знаниях).
Каждый символ имеет свой код - это должно быть понятно (надо же как-то хранить их в памяти).
Так вот, у символа '0' код 48, у '1' - 49, ..., у '9' - 57. Ну и у остальных букв и знаков соответственно свой код.
Простым языком говоря, например, запись '7' - '0' равнозначна записи '7' - 48 или 55 - 48 (где 55 - это код '7') и будет равняться 7. Таким образом, чтобы из символа цифры получить саму цифру надо от него отминусовать 48 (или '0').