关于串口的输入问题求教!!!!-Arduino中文社区 - Powered by Discuz!

Arduino中文社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 4444|回复: 5

[已解决] 关于串口的输入问题求教!!!!

[复制链接]
发表于 2013-8-1 18:38 | 显示全部楼层 |阅读模式
原本的意思是:当串口读取到“11”时,点亮13piin,读取到其他数据是不点亮,但无法实现,测试发现即使输入“11”,并且打印出来也是"11",但n值并不是"11"。

请问,
1.这种时候n值是多少呢?
2.Serial.read()的赋值原理是什么呢?是将寄存器里的第一个字节赋值后依次清除吗?
3.要想实现原本的意思,该怎么写代码呢?

谢谢各位专家了!!

代码如下:
char n;
void setup(){
  Serial.begin(9600);
  pinMode(13,OUTPUT);
}
void loop(){
  if(Serial.available()){
    n = (char)Serial.read();
    Serial.print(n);
    if(n == 11){
      digitalWrite(13,1);
    }
    else{
      digitalWrite(13,0);
    }
  }
}



发表于 2013-8-1 20:59 | 显示全部楼层
你串口监视器发送过去的是“11”这个字符串,而不是11这个数值
 楼主| 发表于 2013-8-1 21:03 | 显示全部楼层
已解决!!
 楼主| 发表于 2013-8-1 21:05 | 显示全部楼层
还有一个问题:

Serial.available()的返回值是在完成一次Serial.read()后马上-1还是在完成一次loop()循环后才-1呢?
 楼主| 发表于 2013-8-1 21:10 | 显示全部楼层
测试发现好像是Serial.read()之后就-1,不知道对不对呢?

我发现测试程序时用Arduino的Serial Monitor观察到结果和用SSCOM观察的结果不样,很多程序都这样,不知道各位是否也遇到这样的现象
发表于 2013-8-1 22:20 | 显示全部楼层
available()是获取缓冲区字节数,此时缓冲区里有多少个字节,就返回多少
如果没有字节,你使用read读,才会-1
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|Archiver|手机版|Arduino中文社区

GMT+8, 2024-12-3 07:42 , Processed in 0.077725 second(s), 16 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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