Передача данных из монитора порта
- Войдите на сайт для отправки комментариев
Привет Всем! У меня есть вопрос, помогите. Я изучаю ардуино по книге Бокселла "ИЗУЧАЕМ 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.
В правом нижнем углу монитора порта настройка - как завершать строку. Можно ничего не добавлять, можно добавлять символы перевода строки и т.п. Вот на них скетч и реагирует.
В правом нижнем углу монитора порта настройка - как завершать строку. Можно ничего не добавлять, можно добавлять символы перевода строки и т.п. Вот на них скетч и реагирует.
Спасибо, всё так просто было