小女子求教~ 关于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)会影响显示结果?甚是郁闷,我是小白,还请各位大神多多指教~ 展开
情况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)会影响显示结果?甚是郁闷,我是小白,还请各位大神多多指教~ 展开
若以下回答无法解决问题,邀请你更新回答
1个回答
2015-08-30
展开全部
和 delay 没有关系
应该是和
Serial.flush();//清空缓冲区
有关系,不知道你为什么要做这个动作
read这个动作默认会取走缓冲区的东西的
应该是和
Serial.flush();//清空缓冲区
有关系,不知道你为什么要做这个动作
read这个动作默认会取走缓冲区的东西的
追问
我试了好多次 就是delay()的问题,
Serial.flush();//清空缓冲区 这一句可要可不要没什么关系
追答
o 加入 delay 之后,能多收到一个字符啊,serial是在中断中做的
你加入delay就能在有限时间内多collect一个字符
然后就从下面出去了
本回答被提问者和网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询