Оператор if для char
- Войдите на сайт для отправки комментариев
Сб, 28/03/2020 - 23:18
Здравствуйте, уважаемые форумчане. Возник вопрос касательно оператора if.
Недавно начал изучать программирование, поэтому не судите строго.
Использую Arduino Mega 2560. Подключил к нему через аппаратный UART GSM модуль sim800.
Отправляю последовательность АТ-команд. Но АТ-команды не всегда срабатывают, иногда приходит ответ ERROR. Так вот хотелось бы организовать условие при котором будет так, если ответ ОК то переходи к следующей команде, если ERROR то отправь повторно данную команду. Но как сделать пока не понимаю.
вот кусочек кода:
#define gsm Serial2
void setup()
{
gsm.println("AT+CIPMUX=0");
delay(2000);
printSerialData();
}
void printSerialData()
{
while(gsm.available()!=0)
Serial.write(gsm.read());
}
А попробуйте пока без GSM и иных космических технологий - просто сравнить две строки.
Я так понял, что нужно считать буфер uart, затем сохранить в отдельный массив. Затем сделать сравнение. Верно?
Я так понял, что нужно считать буфер uart, затем сохранить в отдельный массив. Затем сделать сравнение. Верно?
Вам сказали
Вы понимаете, чем это отличается от "задайте ещё один вопрос нихрена не делая самостоятельно"?
Я уже понял как нужно делать сравнение двух строк, но мне же нужно дальше разобрать свою задачу.
Ну, если понял, так где скетч?
Ну вот, например
char s1[]="Hello"; char s2[]="HeLlo"; void setup() { Serial.begin(9600); int k=strcmp(s1,s2); Serial.print(k); } void loop() { }Теперь складывайте байты из Serial в ASCIIZ строку и сравнивайте с заданным образцом.
вот про складывание байтов из Serial можно, пожалуйста, чуть по-подробнее. Пример какой-нибудь.
Переходим к следующему: массивы и строки. Пробуйте заполнить один массив символами из другого и, затем, сравнить их. Базовый код - в посте #6.
Если я не ошибаюсь, то за копирование отвечает команда strcpy, следовательно код должен быть таким.
char s1[]="Hello"; char s2[]="HeLlo"; void setup() { Serial.begin(9600); strcpy(s1, s2); int k=strcmp(s1,s2); Serial.print(k); } void loop() { }Верно?
Можно и так, в целом, но я бы советовал побайтово копировать. Ибо из сериала валится именно так - байт за байтом, целой строки там может не быть на момент анализа первого символа.
"побайтово копировать" - вот эта мысль интересна. Это должен быть какой-то цикл или же есть отдельная команда?
Вам нужно в массив B помещать байты из сериала по мере их прихода. Один за другим. Попробуйте обоими способами перенести их из массива A и сразу поймете, который из них бессмысленный.
Вот прям чувствую, что тебе Садман, нужно зверушку какую-нить завести. Котенка лучше, он хоть на ковер ссать не станет. Но тут - к чему душа лежит. Честное слово - усилия будут продуктивнее и положительных эмоций больше.
Или ты курсы по программированию для альтернативных детей открыть собираешься и скилл поднимаешь?