Обработка строк в запросе
- Войдите на сайт для отправки комментариев
Делаю управление Ардуины через браузер. Соответственно нужно обрабатывать запросы браузера. Сравнивать строки и при свападении нужных выполнять какие либо действия, это без проблем:
if(request=="/led1-off") digitalWrite(ledPin1, LOW);
Но вот если пошимировать, или изменить какие либо переменные, на это не хватает тяму. информации на http://arduino.ru/Reference/StringObject практический нет, а скудные знания английского не позволякют обращаться к соответсквующим справочникам, на том же http://arduino.cc/en/Reference/StringObject.
Прошу помочь в следующей обработке строки. Запрос такого типа "/led4-127".
Нужно для начала сравнить первые пять символв /led4, к какому диоду относится, затем от строки отнять /led4- шесть символов и оставшиеся перевести из string в integer. ну и после обработки должно :
..... analogWrite(ledPin4, 127);
Большое спасибо!
а request у вас что? строка?
есть функции типа strcmp на сравнение строк...
а по простому, если, допустим знаете перечень запросов, то можно проверять сначала только букву запроса if (request[1] == 'l')
потом в переменную класть число типа
char pwm = (request[6] -0x30) * 100 + (request[7] -0x30) * 10 + (request[8] -0x30);
как-то так.
хотя могу посоветовать sprintf, только он ради вот той одной команды сожрет около 1кб флеша.
да, request это переменная, которая содержит строку. она объявлена так :
я занаю перечень запросов. если я пытаюсь сравнить только букву запроса, как предложили, if (request[1] == 'l'), то компилятор ругается: sketch_apr27a:62: error: invalid conversion from 'const char*' to 'char'.
добалю, что все запросы браузером начинаются с символа "/"
странно. у меня работает, а вам говорит что request указатель? очень странно.
может мне подругому объявить request? взял за основу стандартные примеры для работы с сетью.
попробуй
if (String(request[1]) == String('l'))
других соображений у меня нет.
Александр! Спасибо большое! все замечательно работает!