Разбор массива char в целое число, atoi() возвращает квадраты
Я использую приложение для 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);
}
}
Проблема: я получаю значения + буквы AF для каждого сервопривода - A10, A180, B30 и т. Д. Теперь проблема в том, чтобы превратить это в фактическое целое число. Как вы можете видеть, я объявил массив символов для хранения целых чисел и, как предложено в посте на форуме arduino, я добавил \0 в конце массива. В настоящее время Atoi возвращает случайные символы, в основном квадраты и некоторые случайные числа. Я пытался даже назначить их для строки, а затем.toInt(), но та же проблема там, в основном квадраты. Есть идеи? Спасибо!
1 ответ
Использование print
или же println
чтобы увидеть номер в виде текста. write
отправляет его в виде байта, а Serial Monitor показывает символ с этим кодом ASCII.