和爷爷一起学Arduino:与电脑互传信息

和爷爷一起学Arduino:与电脑互传信息

在前面“和爷爷一起学Arduino:让Arduino发信息给你的电脑(通信)”一文里,我们只说了Arduino发信息给PC。发,相对简单。收,就有一点点小麻烦。

有了上次的实践,这次可以详细介绍串口监视器了。注意一点,串口监视器是PC一侧的,它的收与发,都是以PC来说的。发送,是PC发送信息给Arduino;接收,是PC接收来自Arduino的信息。这个在脑子里不能乱。从上到下介绍。标题栏是当前连接的串口号。我们这次连的是COM3,标题就是“COM3”。下面工作区分两块。上部是一个文本编辑框,供你输入要发送给Arduino的信息。右侧有个“发送”按钮。键入要发送的信息后,点击这个按钮,信息就发给了Arduino。下部是一个文本列表框,依次显示来自Arduino的信息。串口监视器的底部是它的设置区。中间有两个下拉式菜单。左边一个选“没有回车符”,这样,在显示来自Arduino的信息时,完全照样显示,不附加回车符。右边一个选“9600波特率”,如果你的代码设置的波特率不是9600,也要跟着设置,必须保持与代码一致。

把我的示范代码输入Arduino IDE,编译上传后,Arduino与PC就可以来回传递信息了。我们先在文本编辑框输入字符串“0123456789”,会看到在文本列表框里显示了一串数字,从48到57。数值48~57,就是与字符“0”~“9”逐个对应的ASCII码。再输入“ABCDEFGHIJKLM”,会显示65~77。这13个数值分别是“A”~“M”这13个字符的ASCII码。

我们看到,发送是简单的,你要发送了,就直接发送好了。要接收,就得先查询一下串口的接收缓冲区,里面有没有接收到的信息?若Serial.available()为0,表示串口接收缓冲区是空的。因此,在接收代码里要有一个if结构。

这段代码非常简单。但是,按照这段代码,在Arduino一侧,已经能解决一般通信问题了。如果你在PC会编写串口通信代码,你就可以实现Arduino与通信了。

你可以试试,把第一个下拉式菜单拉成“换行符”。你会发现,再显示信息时,每个数据后面跟了一个10。这个10是换行符的ASCII码。如果选“回车”,每个数据后面跟了一个13,这是回车符的ASCII码。如果选“NL和CR”,就跟一个13再跟一个10。这是为了使这个通信能适应各种系统。譬如,在Windows上,按一下键盘上的回车键,发给系统的就是CR加NL,而在UNIX(包括Linux等)上,只送一个NL。

// Arduino板与PC通信的最简示范代码
// 初始化部分
void setup()
{
  Serial.begin(9600);
}
//主函数部分
void loop()
{
  //检测UNO主板是否接收到了来自电脑的数据?
  if(Serial.available() > 0)
  {
    // 把从串口接收到的数据回送到电脑
    Serial.println(Serial.read());
  }
}
展开阅读全文

页面更新:2024-05-02

标签:波特率   缓冲区   监视器   串口   数值   字符   按钮   爷爷   菜单   文本   文本编辑   代码   简单   通信   数据   电脑   信息

1 2 3 4 5

上滑加载更多 ↓
推荐阅读:
友情链接:
更多:

本站资料均由网友自行发布提供,仅用于学习交流。如有版权问题,请与我联系,QQ:4156828  

© CopyRight 2020-2024 All Rights Reserved. Powered By 71396.com 闽ICP备11008920号-4
闽公网安备35020302034903号

Top