Весь протокол в обмене словами, по сути.
Т.е. по определенному набору входных слов можно сделать функции, которые отработают и отправят в ответ строку - результат.
Можно сделать примерно такое (сильно не пинать за говнокод, это пример!):
отправляем строку. арудина её читает, если находит подстроку, то выполняет определенное действие, иногда пишет в терминал какие-то слова, что действие выполнено.
if (strstr(term_in, "SWPOWER" ) != 0) code = 1;/*strstr - найти подстроку в строке, пришедшей с ПК (алгоритм чтения слова опустим)*/
if (strstr(term_in, "CALL_1" ) != 0) code = 2;
if (strstr(term_in, "SMS_SEND" ) != 0) code = 3;
if (strstr(term_in, "CTRL+Z" ) != 0) code = 4;
//в зависимости от найденной подстроки был получен один из кодов и по нему работает case
switch (code)
{
case 1:
Serial.println("@power on/off signal");
digitalWrite(9, HIGH);
delay(1000);
digitalWrite(9, LOW);
break;
case 2:
Serial.println("term@: call number +790679__823");//отправляем сообщение, что начата попытка дозвона
gprsSerial.println("ATD+790679__823;");//в шилд
break;
case 3:
function1();
default:
/*Код, который выполнится, если ниодно из константых значению не соответствует значение в переменной variable*/
Serial.print("text ");
break;