Ввод и обработка комманды через telnet
- Войдите на сайт для отправки комментариев
Вс, 19/03/2017 - 18:50
Добрый день знатоки Arduino!
Есть острая необходимость вводить данные на ардуино удаленно через telnet. Сам telnet сервер настроен, и комманды вводятся с помощью функции switch case, но это неверный подход, и много лишнего кода на минимальные комманды. Почитав гугл ответов нашел мало по данной теме, как вводить длинные команды с распознаванием слов.
Например нужно записать в EEPROM новый IP-адрес для управления arduino. Команда будет примерно такая:
setip 192.168.0.100
Переменная "192.168.0.100" должна записаться в EEPROM.
В данный момент комманды обрабатываются следующим образом, без распознавания слов:
void parseReceivedText()
{ // look at first character and decide what to do
switch (textBuff[0]) {
case 'a' : doAnalogCommand(); break;
case '?' : printHelpMessage(); break;
case 'i' : commandI(); break;
case 'e' : commandE(); break;
case 0x0d : break; //ignore a carriage return
default: printErrorMessage(); break;
} }
void commandE()
{ switch (textBuff[1]) {
case 'x' : closeConnection(); break;
default: printErrorMessage(); break; }
}
void commandI()
{
switch (textBuff[1]) {
case 'n' : showinfo(); break;
case 'p' : commandIP(); break;
default: printErrorMessage(); break; }
}
void commandIP()
{
switch (textBuff[2]) {
case ' ' : changeIP(); break;
default: printErrorMessage(); break; }
}
void changeIP()
{ client.println("Change ip adress.");
}
strncmp(); strstr();
strncmp(); strstr();
Да, про данные комманды я видел некоторую информацию в интернете. Спасибо!
Но все-таки, Вы можете помочь примерным кодом распознавания именно 2-х слов в комманде?
Но все-таки, Вы можете помочь примерным кодом распознавания именно 2-х слов в комманде?
https://www.google.ru/search?q=strncmp+example&*
Хорошо. Спасибо всем за наводку, буду разбираться. Если кто-нибудь изъявит желание поделиться кодом, приветствую. Когда сам составлю код поделюсь тут, может кому пригодится.
Есть 100500 способов решения этой задачи.
Теперь в cmd лежит "setip", в data - "10.10.10.1"
Дальше делаешь чё хочешь:
if(!strcmp(cmd,"setip")){/*разбираешь data как IP*/}; if(!strcmp(cmd,"setmask")){/*разбираешь data как маску*/};