极客工坊

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 11648|回复: 3

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

[复制链接]
发表于 2015-2-26 15:22:02 | 显示全部楼层 |阅读模式
char bb = (char)mySerial.read();
if((bb != '\r') && (bb != '\n') ) Str += bb;

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

使用道具 举报

发表于 2015-2-26 17:46:33 | 显示全部楼层
本帖最后由 Ansifa 于 2015-2-26 17:47 编辑

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


  1. String inputString = "";
  2. boolean stringComplete = false;
  3. .........
  4. void loop()
  5. {
  6.     while(Serial.available()>0)
  7.     {
  8.         char inChar = (char)Serial.read();
  9.         inputString += inChar;
  10.         if (inChar == '\n' || inChar == '\r')
  11.         {
  12.             stringComplete = true;
  13.         }
  14.         delay(2);
  15.     }
  16.     if(stringComplete == true)
  17.     {
  18.         //inputString就是输入的字符串
  19.     }
  20. }
复制代码
回复 支持 反对

使用道具 举报

 楼主| 发表于 2015-2-26 22:46:20 | 显示全部楼层
Ansifa 发表于 2015-2-26 17:46
楼主思路错了,读取不以结束符而停止,而是要读清串口的FIFO为止。
然后取出到结束符之前的文字。下面代码 ...

if (inChar == '\n' || inChar == '\r')  就是判断string 结束的标志吗?
回复 支持 反对

使用道具 举报

发表于 2015-2-27 15:18:00 | 显示全部楼层
wdb_9955 发表于 2015-2-26 22:46
if (inChar == '\n' || inChar == '\r')  就是判断string 结束的标志吗?

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

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

"DEWGYFUGEWUIGHUT“
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|联系我们|极客工坊

GMT+8, 2026-6-10 14:46 , Processed in 0.082844 second(s), 18 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表