Итак, у меня есть мой модуль arduino и esp8266 wifi. Все правильно подключено, и отправка данных в arduino позволяет управлять соединением с помощью AT-команд. Мой skletch выглядит следующим образом:arduino и esp8266 - как получить ответ команды AT в переменную
void setup()
{
Serial.begin(9600);
Serial1.begin(9600);
}
void loop()
{
if (Serial.available() > 0) {
char ch = Serial.read();
Serial1.print(ch);
}
if (Serial1.available() > 0) {
char ch = Serial1.read();
Serial.print(ch);
}
Код выше позволяет мне посылать команды и увидеть ответ от особ. Несмотря на разное время отклика и различные ответы, мне нужно сохранить ответ в переменной, когда создается такой модуль. К сожалению, я не могу сделать это из-за Serial1.read(), захватив только один символ из буфера Serial1.available() вместо полного буфера.
Я попробовал подход так:
if (Serial1.available() > 0) {
while (Serial1.available() > 0) {
char ch = Serial1.read();
Serial.print(ch);
response = response.concat(ch);
}
} else {
String response = "";
}
Так до тех пор, þér EIS что-то в буфере он отправляется в переменной отклика, concatens последний символ с самим собой. И позже его можно найти с помощью команды indefOf для отметки «ОК» или «ОШИБКИ». Но это не работает должным образом :(Например, это может напечатать мою переменную 8 раз (не знаю почему). Мне нужен полный ответ от модуля wifi, чтобы проанализировать его, например, чтобы сделать светодиод на моей плате arduino, если правильная команда поступает из Wi-Fi сети, но и отправить некоторые данные, если я нажимаю кнопку на Arduino к сети Любые идеи будут оценены
Kalreg
Я бы хотел порекомендовать вам поиск в Интернете для «почему бы не использовать« Струны в ардуине ». Строка может вызвать проблемы, если вы не знаете, почему и как правильно ее использовать. Если вы продолжаете использовать их, то, по крайней мере, знаете, что такое подводные камни. Попробуйте реализовать массивы символов (строки C). –