小女子求教~ 关于arduino 串口整行显示多位数字的问题

我想从PC发送数据给arduino,然后将其转换为int型后再发回给PC,但是我发现一个奇怪的问题,在对多位数操作时:情况1:加delay(2)时,多位数显示为一整行:S... 我想从PC发送数据给arduino,然后将其转换为int型后再发回给PC,但是我发现一个奇怪的问题,在对多位数操作时:

情况1:加delay(2)时,多位数显示为一整行:

String
inString="";//储存从串口获取的字符串
int rce=0,flag=0;
void setup()
{
// put
your setup code here, to run once:
Serial.begin(9600);// opens serial port,
sets data rate to 9600 bps
}
void loop()
{
// put your main code
here, to run repeatedly:
while(Serial.available())
{

inString+=char(Serial.read());
delay(2);//延时为什么与显示有关?

Serial.flush();//清空缓冲区
flag=1;
}
if(flag)
{

flag=0;
rce=inString.toInt();//String to int

Serial.print(rce);
Serial.println(",");
}
else;

inString="";

显示结果是这样的:

15,
16,
17,

情况2:去掉delay(2)时,多位数每位单独显示:
显示结果是这样的:
1,
5,
1,
6,
1,
7,

为甚delay(2)会影响显示结果?甚是郁闷,我是小白,还请各位大神多多指教~
展开
 我来答
若以下回答无法解决问题,邀请你更新回答
匿名用户
2015-08-30
展开全部
和 delay 没有关系

应该是和
Serial.flush();//清空缓冲区

有关系,不知道你为什么要做这个动作

read这个动作默认会取走缓冲区的东西的
追问
我试了好多次 就是delay()的问题,
Serial.flush();//清空缓冲区 这一句可要可不要没什么关系
追答
o 加入 delay 之后,能多收到一个字符啊,serial是在中断中做的

你加入delay就能在有限时间内多collect一个字符

然后就从下面出去了
本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式