珍惜你的时间。
我正在尝试将从 Arduino IDE 的 serialEvent() 中的串行端口读取的“字符串”转换为具有精确表示的整数值。
例如,如果 String myString = 200 那么 int myInt 应该是 200。
我已经取得了一定的成功,但无法将 String 转换为超过 255 的精确 int 表示。
我尝试过的解决方案:
1) 在 Arduino 中使用 .toInt() 函数。
2)使用“atoi”和“atol”功能。
3) 循环() 中的 Serial.parseInt()。
所有这些方法在每 255 个值之后从 0 开始重新计数。
我不能使用 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);
}
}