#arduino
#arduino
Вопрос:
Что я пытаюсь сделать, так это преобразовать строку из последовательного ввода в отдельные слова путем обнаружения пробелов между словами:
String input;
char split[]{};
String output;
String product;
int inputSize;
void setup() {
Serial.begin(9600);
Serial.println("ready");
}
void loop() {
if (Serial.available() > 0) {
input = Serial.readString();
input.toCharArray(split, 8);
inputSize = sizeof(input);
for (int i = 0; i < inputSize; i ){
if (isSpace(split[i])) {
product = output;
output = "";
Serial.println(product);
}else{
output = output split[i];
}
}
}
}
Я пытаюсь преобразовать строку из последовательного ввода в
отдельные слова, обнаруживая пробелы между словами, которые он должен
выведите все слова, отправленные на последовательный монитор, разделенные на разные
строки.
Однако иногда он отправляет одно слово из входной строки, а иногда и не отправляет, и оно накапливается и отправляет сразу несколько слов без пробелов
Комментарии:
1. предоставьте образец ввода и созданный вывод для этого ввода. почему вы считываете строку и преобразуете ее в массив символов. вы могли бы просто прочитать байты. почему вы ограничиваете длину массива символов 8? что, если строка длиннее? что, если первым символом является пробел? вы не инициализировали вывод строки… просто для начала, чтобы указать на несколько проблем.
Ответ №1:
Используйте следующий код, вы получите строку, разделенную на слова
String output;
void setup() {
Serial.begin(9600);
Serial.println("ready");
}
void loop() {
if (Serial.available() > 0) {
char input = Serial.read();
if((input == ' ')){
Serial.println(output);
output = "";
}else
output =input;
}
}
Комментарии:
1. Большое вам спасибо. Здорово, что есть такие люди, как вы, которые помогают другим учиться.