Разбор массива char в целое число, atoi () возвращает квадраты - PullRequest
0 голосов
/ 10 ноября 2018

Я использую приложение для Android для отправки значений для управления сервоприводами. Код:

char inputData[4];  
char buffer[3];
void loop()
{



   if(Serial.available() > 3) {
      for (int i = 0; i < 4; i++){
        inputData[i] = Serial.read();

        }
    char buffer[4];
    buffer[0] = inputData[1];
    buffer[1] = inputData[2];
    buffer[2] = inputData[3];
    buffer[3] = '\0';
    int angle = atoi(buffer);
    Serial.write(angle);


   }
}

Проблема: я получаю значения + буквы A-F для адресации каждого сервопривода - A10, A180, B30 и т. Д. Теперь проблема в том, чтобы превратить это в фактическое целое число. Как вы можете видеть, я объявил массив символов для хранения целых чисел, и, как предложено в посте на форуме arduino, я добавил \ 0 в конце массива. В настоящее время Atoi возвращает случайные символы, в основном квадраты и некоторые случайные числа. Я пытался даже назначить их для строки, а затем .toInt (), но та же проблема там, в основном квадраты. Есть идеи? Спасибо!

1 Ответ

0 голосов
/ 10 ноября 2018

Используйте print или println, чтобы увидеть число в виде текста. write отправляет его в виде байта, а Serial Monitor показывает символ с этим кодом ASCII.

...