Posun znakov prijatých cez sériový port

Zápisník experimentátora

Posun znakov o určený počet písmen je nenáročnou úlohou, ktorá je vhodná aj pre začiatočníka. Pôvodná myšlienka pochádza z Cézarovej šifry, kde sa posúva o 3 znaky. Inou modifikáciou je algoritmus ROT13, kde sa posúva o 13 znakov. V našom príklade budeme posúvať o jeden znak. Do Arduina znaky odošleme pomocou Monitora sériového portu.

Program

Algoritmus je jednoduchý. Musíme si dať pozor iba na znaky konca riadku, ktoré nesmieme posunúť. Tie odošleme naspäť do počítača tak, ako sme ich prijali. Ostatné znaky môžeme posunúť.

Algoritmus sa dá napísať aj jednoduchšie, pretože vieme, že zobraziteľné znaky sa začínajú medzerou. Preto by nám stačilo porovnať všetký prijaté znaky so znakom medzery a posunúť iba tie znaky. Pre názornosť som ale zvolil algoritmus, kde sú znaky konca riadku jednoznačne vymenované, aby bolo na prvý pohľad jasné, o čo sa 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 sa nachádza na serveri GitHub.


06.03.2018


Menu