Posun znaků přijatých přes sériový port

Zápisník experimentátora

Posun znaků o určený počet písmen je nenáročnou úlohou, která je vhodná i pro začátečníka. Původní myšlenka pochází z Caesarově šifry, kde se posouvá o 3 znaky. Jinou modifikací je algoritmus ROT13, kde se posouvá o 13 znaků. V našem příkladu budeme posouvat o jeden znak. Do Arduina znaky odešleme pomocí Monitoru sériového portu.

Program

Algoritmus je jednoduchý. Musíme si dát pozor pouze na znaky konce řádku, které nesmíme posunout. Ty odešleme zpět do počítače tak, jak jsme je přijali. Ostatní znaky můžeme posunout.

Algoritmus lze napsat i jednodušší, protože víme, že zobrazitelné znaky se začínají mezerou. Proto by nám stačilo porovnat všechny přijaté znaky se znakem mezery a posunout pouze ty znaky. Pro názornost jsem ale zvolil algoritmus, kde jsou znaky konce řádku jednoznačně vyjmenovány, aby bylo na první pohled jasné, o co se snažíme.

int received;

void setup() {
  Serial.begin(9600);
}

void loop() {
  if (Serial.available() > 0) {
    received = Serial.read();
    switch (received) {
      case '\r':
      case '\n':
        Serial.write(received); // new line is not rotated, we want to see new line in Serial Monitor
        break;
      default:
        Serial.write(received + 1); // char rotate
        break;
    }
  }
}

Zdrojový kód

Zdrojový kód se nachází na serveru GitHub.


06.03.2018


Menu