Здравствуйте.
2 дня бьюсь над одной загадкой:
Требуется собрать входящие байты в одно целое число.
Вводим, к примеру 123
Вариант № 1:
char incoming;
char str[4];
int i=0;
void setup() {
Serial.begin(9600);
}
void loop() {
i=0;
while (Serial.available()) {
incoming = Serial.read();
if (incoming < '0' || incoming > '9') break;
str[i] = incoming;
i++;
// Serial.println(i);
}
if (i != 0)
{
str[i] = 0;
Serial.println(atoi(str));
}
}
Результат:
1
2
3
Вариант № 2:
char incoming;
char str[4];
int i=0;
void setup() {
Serial.begin(9600);
}
void loop() {
i=0;
while (Serial.available()) {
incoming = Serial.read();
if (incoming < '0' || incoming > '9') break;
str[i] = incoming;
i++;
Serial.println(i);
}
if (i != 0)
{
str[i] = 0;
Serial.println(atoi(str));
}
}
Результат:
1
2
3
123
Внимание! во втором примере итоговый результат выводимый Serial.println(atoi(str)); правильный!
Каким образом Serial.println(i); влияет на результат?
Мужики помогите! Уже все мозги сломал.
Заранее благодарен!