Как заставить программу считывать данные с монитора порта и убрать *мусор* из данных на выходе

Snp_Vint
Offline
Зарегистрирован: 08.06.2016

Сделана программа для шифровки шифром Цезаря сообщения на английских символах, но возникла проблема. Не получается заставить принимать данные для шифрования сообщений с монитора порта, и не удается убрать *мусор* с получаемых данных в мониторе порта, подробнее на фото. ЗАРАНЕЕ СПАСИБО!

http://s017.radikal.ru/i429/1606/5b/8f5968205575.png  - фото

Код программы:

void setup()
{
Serial.begin(9600);
}
void loop()
{
char* str = "SHIFRCEZARYA";
int shift = 3;
for (shift = 3; shift <= 3; shift ++)
{
Serial.print(shift);
Serial.print(" = ");
int i = 0;
while (str[i] != '�')
{
char ch = str[i];
int new_char_code = ch + shift;
// Знаки A-Z имеют кода 65-90
// Букв в латинском алфавите 26
if (new_char_code > 90) new_char_code -= 26;
if (new_char_code < 65) new_char_code += 26;
Serial.print(char(new_char_code));
i ++;
}
Serial.println();
}
while (!Serial.available()) {}
}
OlegM
Offline
Зарегистрирован: 14.06.2016

нормально вставь код в спец тег, так проще читать.

Snp_Vint
Offline
Зарегистрирован: 08.06.2016
void setup()
{
Serial.begin(9600);
}
void loop()
{
char* str = "SHIFRCEZARYA";
int shift = 3;
for (shift = 3; shift <= 3; shift ++)
{
Serial.print(shift);
Serial.print(" = ");
int i = 0;
while (str[i] != '�')
{
char ch = str[i];
int new_char_code = ch + shift;
// Знаки A-Z имеют кода 65-90
// Букв в латинском алфавите 26
if (new_char_code > 90) new_char_code -= 26;
if (new_char_code < 65) new_char_code += 26;
Serial.print(char(new_char_code));
i ++;
}
Serial.println();
}
while (!Serial.available()) {}
}

 

OlegM
Offline
Зарегистрирован: 14.06.2016

сча гляну, шифр цезаря )), неуверен успею, а то малый на пол часа играть будет, а потом гляну

OlegM
Offline
Зарегистрирован: 14.06.2016

занят был, тип такой код

void setup()
{
  Serial.begin(9600);
}
void loop()
{
  char* str = "ABCZZ"; // строка, что шифруем
  //65-90, 25 87
  char encStr;
  uint8_t shift = 3; //сдвиг
  uint8_t strtNmbChar = 65, endNmbChar = 90;
  int i = 0; //итератор
  while (str[i] != '\0')
  {
    if (str[i] > (endNmbChar - shift)) encStr = ((str[i] + shift - 1) - (endNmbChar - strtNmbChar));
    else encStr = str[i] + shift;
    Serial.print(encStr);
    i++;
  }
  Serial.println();
  delay(5000);

}

 

andriano
andriano аватар
Offline
Зарегистрирован: 20.06.2015

Snp_Vint, ВЫ сами поняли, что написали в строке 14?