volatile char cmd_char = 'z';

const char cmd_id = 'i';

void setup() {
    Serial.begin(57600);
    Serial.flush();
}

void loop() {
  if (Serial.available()) {
    /* read the most recent byte */
    cmd_char = (char)Serial.read();
  }
  if (cmd_char != 'z') {
    cmd(cmd_char);
    cmd_char = 'z';
  }
}

void cmd (char val) {
  if (val == cmd_id) {
    Serial.println(cmd_id);//End of action
  }
}