Цените ваше время.
Я пытаюсь преобразовать чтение "String" из последовательного порта в serialEvent () Arduino IDE в целочисленные значения с точным представлением.
Например, если String myString = 200, тогда int myInt должен быть 200.
Я был несколько успешным, но не смог преобразовать String в точное представление int после 255.
Решения, которые я пробовал:
1) использовала функцию .toInt () в Arduino.
2) используются функции "atoi" и "atol".
3) Serial.parseInt () в цикле ().
Все эти методы начинают пересчет с 0 после каждых 255 значений.
Я не могу использовать parseInt, так как он работает только внутри loop (). Мое приложение требует постоянного хранения значения переменной до тех пор, пока через порт не будет передано другое значение. Для этого была использована флеш-память Arduino Due.
Кажется, что код хранения памяти работает только внутри serialEvent ().
Фрагмент кода, как показано ниже:
#include <stdlib.h>
#include <DueFlashStorage.h>
DueFlashStorage memory;
String x = " ";
int x_size;
int threshold;
void setup(){
Serial.begin(115200);
}
void loop{
Serial.println(memory.read(0));
}
void serialEvent(){
while(Serial.available()){
x = Serial.readStringUntil('\n');
x_size = x.length();
char a[x_size+1];
x.toCharArray(a, x_size+1);
threshold = atoi(a);
memory.write(0, threshold);
}
}