Строка не печатается в последовательном мониторе
Я пытаюсь сделать ядро для создателя макроключей, это код стартовой страницы:
char m[] = "What do you want to do? Type the following commands in this "
"terminal:\nnew --> Creates a new Keybinding\ndelete --> Deletes a "
"previous Keybind\nlookup --> Find what is bound to a key\n\nTurn off the "
"switch to go back to the normal mode.";
Serial.println(m);
Serial.println(String(takenKeybinds) + "/64 Keybinds taken.");
Когда я запускаю его, на экране отображается:
What do you want to do? Type the following commands in this terminal:
new --> Creates a new Keybinding
delete --> Deletes a previous Keybind
lookup --> Find what is bound to a key
Turn off the switch to go back to the normal mode.
Последняя строка отсутствует. Это проблема с приведением объектов? takenKeybind
— это int
.
@TheNerdLog, 👍0
Обсуждение1 ответ
Лучший ответ:
Никогда не делайте этого:
Serial.println(String(takenKeybinds) + "/64 Keybinds taken.");
Да, он должен справиться с этим и добавить строки, но это действительно неприятно, даже если это работает. И нет абсолютно никакого призыва когда-либо выполнять конкатенацию при печати в последовательный порт.
Вместо этого просто используйте:
Serial.print(takenKeybinds);
Serial.println(F("/64 Keybinds taken."));
Обратите также внимание на использование макроса F()
при выводе строкового литерала. Это сохраняет строку во флэш-памяти и предотвращает ее копирование в ОЗУ, что просто расточительно.
То же самое и с вашей большой длинной строкой — она тратит оперативную память, и если вы никогда не хотите ее изменять, зачем хранить ее в оперативной памяти? Лучше:
Serial.println(F("What do you want to do? Type the following commands in this terminal:"));
Serial.println(F("new --> Creates a new Keybinding"));
Serial.println(F("delete --> Deletes a previous Keybind"));
Serial.println(F("lookup --> Find what is bound to a key"));
Serial.println();
Serial.println(F("Turn off the switch to go back to the normal mode."));
- Arduino Serial.ReadString() проблема
- Почему я не могу распечатать значения логических переменных (0 и 1) с помощью функции println?
- Отправка последовательных данных в прерывании
- Чтение строки, разделенной запятыми
- Почему люди используют 115200 вместо 9600?
- Получение шестнадцатеричных данных с терминала
- Преобразование из ASCII uint8_t в строку
- Ошибка 'Serial' was not declared in this scope
это происходит в минимальном скетче?, @Juraj
Для какой платы компилируете?, @Majenko