极客工坊

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 23162|回复: 5

【讨论】串口只输入一个字符,但是Serial.available()却true了3次

[复制链接]
发表于 2013-7-20 02:46:45 | 显示全部楼层 |阅读模式
本帖最后由 疯子。 于 2013-7-20 14:08 编辑

问题解决了。
是串口监视器部分不知道什么时候设置成“换行和回车”了

  1. char incomingByte; //传入的串行数据
  2.   
  3. void setup() {
  4.   Serial.begin(9600);     // 打开串行端口,设置传输波特率为9600 bps
  5. }
  6.   
  7. void loop() {
  8.   
  9.   //只有当你接收到数据时才会发送数据,:
  10.   if (Serial.available() > 0) {
  11.     //读取传入的字节:
  12.     incomingByte = Serial.read();
  13.   
  14.     //显示你得到的数据:
  15.     Serial.print("I received: ");
  16.     Serial.println(incomingByte);
  17.   }
  18. }
复制代码



本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
回复

使用道具 举报

 楼主| 发表于 2013-7-20 12:22:10 | 显示全部楼层
好了,串口监视器部分不知道什么时候设置成“换行回车”了
回复 支持 反对

使用道具 举报

发表于 2013-7-20 12:33:37 | 显示全部楼层
本帖最后由 拾瑞 于 2013-7-20 12:50 编辑

让它以十六进制显示一下,后面二个"空"的具体代码是什么?
--------------------------------------
9600的速率,换算一下每发送一个字节(Byte)的时间为1毫秒左右,难道是太慢了,而LOOP里面的代码执行太快,但串口是全双工的,发送和接收理应没有延时的才对,不会出现半双工时发送和接收切换延时问题的!
-------------------------------------
你用什么向UNO串口发送字符的?改用串口助手看看!我的UNO不在手上,不然我试一下!

回复 支持 反对

使用道具 举报

 楼主| 发表于 2013-7-20 14:08:12 | 显示全部楼层
拾瑞 发表于 2013-7-20 12:33
让它以十六进制显示一下,后面二个"空"的具体代码是什么?
--------------------------------------
9600的 ...

谢谢您,问题解决了。

是串口监视器部分不知道什么时候设置成“换行和回车”了
回复 支持 反对

使用道具 举报

发表于 2013-7-20 20:56:28 | 显示全部楼层
看不大明白。发送了三个字符?数字后多了换行符和回车符?
回复 支持 反对

使用道具 举报

 楼主| 发表于 2013-7-21 04:33:44 | 显示全部楼层
wangnengjie 发表于 2013-7-20 20:56
看不大明白。发送了三个字符?数字后多了换行符和回车符?

是的         
回复 支持 反对

使用道具 举报

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

本版积分规则

Archiver|联系我们|极客工坊

GMT+8, 2026-6-7 19:10 , Processed in 0.035966 second(s), 20 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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