Arduino进行串行读取字符串拆分然后转换为Int

Posted

技术标签:

【中文标题】Arduino进行串行读取字符串拆分然后转换为Int【英文标题】:Arduino making a serial read string split and Then convert to Int 【发布时间】:2013-12-08 12:37:55 【问题描述】:

我一直在尝试使用多种不同的方式在 arduino 中拆分字符串,但似乎没有任何效果。我最近的尝试:

String inData = "";
    int cPosition;
    String data[2];
    int count = 1;

    if (Serial.available() > 0) 

            int ssize = Serial.available();
            for(int i=0;i<ssize;i++)
              inData += (char)Serial.read(); 
            

            do
               cPosition =  inData.indexOf(':');
                if(cPosition != -1)
               
                 data[count] = inData.substring(0,cPosition);
                 count++;
                
             while(cPosition >=0);


            Serial.println(data[1]);

    

我有两个值作为“00:00”输入,我想拆分它们,但也将拆分值转换为 Int,因为它们始终是 00 到 100 之间的整数。

【问题讨论】:

您必须先阅读 整个 字符串,然后才能进行转换。您的代码不能确保您获得了整个字符串。 【参考方案1】:

嘿,你有没有试过x=Serial.parseInt(); 这会读取下一个数据,如果它会找到一个整数,例如“fahijah123234fjrkaljf”进入 x 将是 123234 与下一个整数值相同

//incommeing: jsj123456asklfj654321faskl
int x,y;
x=Serial.parseInt();
y=Serial.parseInt();

Serial.println(x);//123456
Serial.println(y);//654321

要合并它们,请使用strcatsprintf

http://arduino.cc/en/Serial/ParseInt, http://arduino.cc/en/Serial/ParseFloat

【讨论】:

以上是关于Arduino进行串行读取字符串拆分然后转换为Int的主要内容,如果未能解决你的问题,请参考以下文章

Arduino Uno Raspberry Pi 串行通信双读数

Arduino 串行返回奇怪的数字 + 无法将 char 数组转换为 int C++

PySerial 和值拆分错误

通过串行Arduino和XBee读取数据

arduino 读取串口数值 ~

Arduino通过串口读取多个字符串,并且转换为数字数组