wdb_9955 发表于 2015-2-26 15:22:02

如何判断字符串已经读完?先谢谢了。

char bb = (char)mySerial.read();
if((bb != '\r') && (bb != '\n') ) Str += bb;

如何判断 bb内的字符除了'\r'和'\n' 已经全部读出来了?

Ansifa 发表于 2015-2-26 17:46:33

本帖最后由 Ansifa 于 2015-2-26 17:47 编辑

楼主思路错了,读取不以结束符而停止,而是要读清串口的FIFO为止。
然后取出到结束符之前的文字。下面代码,区别在于while(Serial.available()>0),读取部分和楼主基本一样不用详看


String inputString = "";
boolean stringComplete = false;
.........
void loop()
{
    while(Serial.available()>0)
    {
      char inChar = (char)Serial.read();
      inputString += inChar;
      if (inChar == '\n' || inChar == '\r')
      {
            stringComplete = true;
      }
      delay(2);
    }
    if(stringComplete == true)
    {
      //inputString就是输入的字符串
    }
}

wdb_9955 发表于 2015-2-26 22:46:20

Ansifa 发表于 2015-2-26 17:46 static/image/common/back.gif
楼主思路错了,读取不以结束符而停止,而是要读清串口的FIFO为止。
然后取出到结束符之前的文字。下面代码 ...

if (inChar == '\n' || inChar == '\r')就是判断string 结束的标志吗?

Ansifa 发表于 2015-2-27 15:18:00

wdb_9955 发表于 2015-2-26 22:46 static/image/common/back.gif
if (inChar == '\n' || inChar == '\r')就是判断string 结束的标志吗?

是的,结束符随便遇到一个就结束了,后面的全部不要。

比如收到
"DEWGYFUGEWUIGHUT\r\n\r\nfrbhyeqgfrig"
遇到第一个\r就结束了,后面的全部忽略,得到

"DEWGYFUGEWUIGHUT“
页: [1]
查看完整版本: 如何判断字符串已经读完?先谢谢了。