Передача данных из монитора порта
- Войдите на сайт для отправки комментариев
Привет Всем! У меня есть вопрос, помогите. Я изучаю ардуино по книге Бокселла "ИЗУЧАЕМ ARDUINO".
Я дошёл до места, где изучается передача данных из монитора порта в ардуинку. Там есть пример:
Цитата: "Для исследования процесса передачи и приема данных посредством монитора порта рассмотрим следующий скетч. Он принимает одноразрядное число от пользователя, умножает его на 2 и отправляет результат в монитор порта."
Далее даётся скетч:
// Проект 13 - Умножение числа на два int number; void setup() { Serial.begin(9600); } void loop() { number = 0; // обнулить переменную, подготовив // ее к приему нового числа Serial.flush(); // очистить буфер порта от "мусора" перед ожиданием while (Serial.available() == 0) { // ничего не делать, пока что-то не появится в буфере порта } while (Serial.available() > 0) { number = Serial.read() - '0'; // прочитать цифру из буфера порта, // вычесть из ASCII-кода цифры // код символа '0', чтобы получить число } // Вывести число! Serial.print("You entered: "); Serial.println(number); Serial.print(number); Serial.print(" multiplied by two is "); number = number * 2; Serial.println(number); }
По книге, я должен получать следующее при вводе цифры:
"You entered: 8
8 multiplied by two is: 16"
На деле же у меня выскакивает 2 строки (например при вводе 8-ки):
Вот эта вторая строчка выпрыгивает всегда, и при вводе любой цифры там именно -38 и -76.
Почему так происходит?
Дальше я хотел вообще сначала понять что за функция Serial.available (). Я не совсем понял, но она типа возвращает количество байт в буфере монитора порта (это так?). На сайте https://doc.arduino.ua/ru/prog/Serial/Available есть примет скетча:
int incomingByte = 0; // для данных, поступающих через последовательный порт void setup() { Serial.begin(9600); // открываем последовательный порт //и задаем скорость обмена 9600 бод } void loop() { // отправляем данные только после их получения: if (Serial.available() > 0) { // считываем входящий байт: incomingByte = Serial.read(); // показываем, что именно мы получили: Serial.print("I received: "); Serial.println(incomingByte, DEC); } }
Вводя цифру я должен получать DEC обозначение введённого символа. Типа при вводе 1 я должен увидеть "I received: 49". Но опять же мне выскакивает две строки:
"I received: 49
I received: 10"
И на второй всегда 10-ка. Что опять не так?
На деле же у меня выскакивает 2 строки (например при вводе 8-ки):
Вот эта вторая строчка выпрыгивает всегда, и при вводе любой цифры там именно -38 и -76.
В правом нижнем углу монитора порта настройка - как завершать строку. Можно ничего не добавлять, можно добавлять символы перевода строки и т.п. Вот на них скетч и реагирует.
В правом нижнем углу монитора порта настройка - как завершать строку. Можно ничего не добавлять, можно добавлять символы перевода строки и т.п. Вот на них скетч и реагирует.
Спасибо, всё так просто было