C++ arduino中串行接收数据的整数解析

C++ arduino中串行接收数据的整数解析,c++,serial-port,arduino,cmath,C++,Serial Port,Arduino,Cmath,我正在arduino中使用以下代码接收串行数据Serial.print((char)Serial2.read()): y456x123 y444x333 现在我想在x&y变量中存储数据,类似地,第二次存储为x=123&y=456 x=333和y=444 我该怎么做呢?这完全是错误的,你根本不知道指针是什么。 这是C/C中知识的一大不足++ 最快的解决方案是使用String对象,最好的方法是学习C basic,这是一本好书/指南,这里有太多关于指针的内容要写。好吧,每次传输大约有9个事件调用(

我正在arduino中使用以下代码接收串行数据
Serial.print((char)Serial2.read())

y456x123

y444x333
现在我想在x&y变量中存储数据,类似地,第二次存储为
x=123
&
y=456
x=333
y=444


我该怎么做呢?

这完全是错误的,你根本不知道指针是什么。 这是C/C中知识的一大不足++


最快的解决方案是使用String对象,最好的方法是学习C basic,这是一本好书/指南,这里有太多关于指针的内容要写。

好吧,每次传输大约有9个事件调用(代码执行),但你没有进行正确的解析,因为你给了atoif函数字母('x'和'y')

我建议您将所有数据存储到一个数组中,然后循环到数组中,并将数字添加到循环中

储存:

array[possition] = received;
possition++;
然后,当存储完成时(接收=='\n'):


这是一个简单的想法,需要在if语句中对其进行筛选,否则它会同时添加两个值。

决定调用Serial2.read()的原因。这是y456x123还是单个字符?您的字符串处理非常糟糕。从char inData[42]开始,这样您就有了一个实际的数组来存储字符。我已经实现了您的想法。
if(array[possition] != 'x'){

    x = (x*10) + (int) array[possition];
}