Close

Ashell

Označeno štítky: ,

  • Toto téma obsahuje celkem 0 odpovědí. Do diskuze (1 diskutující) se naposledy zapojil uživatel strunc a poslední změna proběhla před 8 roky a 11 měsíci.
Aktuálně je na stránce zobrazen 1 příspěvek (celkem z 1)
  • Autor
    Příspěvky
  • #5554
    strunc
    Účastník

    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;
    }
    
    
Aktuálně je na stránce zobrazen 1 příspěvek (celkem z 1)
  • Pro reakci na toto téma se musíte přihlásit.