Potřeboval jsem v jednom projektu mít na Arduinu takový malý shell, opravdu jednoduchý, ale takový abych mohl řídit aplikaci v Arduinu příkazy přes seriový port.
Povedlo se a mám z něj radost, tak Vám jej zde nabízím k použití.
void setup() {
Serial.begin(9600); // opens serial port, sets data rate to 9600 bps
}
void loop() {
if (Serial.available() > 0) getCommand();
}
boolean vypis(String textLine, boolean newLine = true) {
if (Serial) {
if (newLine) Serial.println(textLine); else Serial.print(textLine);
return true;
}
return false;
}
/*
Funkce pro precteni prikazu i s parametry ze serioveho portu a zpracuje prikaz pripadne i s parametry
*/
boolean getCommand() {
String cmdLine = ""; // command line
String cmd = ""; // separated command
String param = ""; // separated parameters
// send data only when you receive data:
if (Serial.available() > 0) {
// read the incoming byte:
cmdLine = Serial.readString();
cmdLine.trim();
vypis("> ", false);
vypis(cmdLine);
cmd = cmdLine.substring(0, cmdLine.indexOf(" "));
cmd.toLowerCase();
param = cmdLine.substring(cmdLine.indexOf(" ") + 1);
param.trim();
if (cmd == "help") {
vypis("Napoveda pro shell na Arduinu");
vypis("-----------------------------");
vypis("");
vypis("Sem si pak muzes dopsat napovedu jakou potrebujes.");
vypis("");
vypis("Uzivej Ashell v radosti!");
}
else if (cmd == "vypis") {
vypis(param);
}
else {
vypis("Unrecognized command");
}
return true;
}
return false;
}