0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看威廉希尔官方网站 视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

基于MicroROS学习板的串口通信接收实验

CHANBAEK 来源:鱼香ROS 作者:小鱼 2023-07-03 10:48 次阅读

你好,我是爱吃鱼香ROS的小鱼。上一节我们完成了第一个Hello World工程,学习使用了串口模块的初始化和发送,本节我们再来一个串口接收小实验,把串口收发数据补齐。

教程所使用硬件平台为MicroROS学习板V1.0.0,可点击阅读原文购买及查看详情

图片

一、检测并接收单个字符

1.1 代码编写

/**
 * @file demo01_read_byte.cpp
 * @author fishros@foxmail.com
 * @brief 初始化串口,当有数据过来的时候读取并将数据打印出来
 * @version 0.1
 * @date 2022-12-18
 * 
 * @copyright Copyright (c) 2022
 * 
 */
#include < Arduino.h >


void setup()
{
    // 初始化串口
    Serial.begin(115200);
}


void loop()
{
    // 判断是否有有效数据,返回值是有效数据的长度
    if (Serial.available())
    {
        // 读取一个数据
        int c = Serial.read();
        // -1 代表接收失败
        if (c != -1)
        {
            // 以%c字符的格式输出接收的数据
            Serial.printf("I receve %c\\n", c);
        }
    }
}

这里多用了一个函数Serial.available(),该函数代表当前串口中缓存有效数据的长度。

1.2 使用串口监视器发送消息

使用快捷键,编译 Ctrl+Alt+B、上传 Ctrl+Alt+U,接着准备发送数据

因为要发送消息,这里我们换一个收发分离的串口监视器来进行数据发送

使用Ctrl+Alt+~打开终端,接着在终端中你可以看到串口监视器一栏

图片

接着打开我们板子对应的串口设备

•选择串口编号

•设置波特率

•点击开始监视

图片

发送测试

•输入数据

•点击发送

•查看返回

图片

尝试发送12

图片

可以看到收到了两条返回,这是因为我们每次只接收一个数据,所以即使发送12,接收数据也是一个一个接收和打印的。

那有没有办法一次性接收多个数据呢?我们换个函数即可。

二、一次性接收一串数据

2.1 代码编写

/**
 * @file demo01_read_byte.cpp
 * @author fishros@foxmail.com
 * @brief 初始化串口,当有数据过来的时候读取并将数据打印出来
 * @version 0.1
 * @date 2022-12-18
 *
 * @copyright Copyright (c) 2022
 *
 */
#include < Arduino.h >


void setup()
{
    // 初始化串口
    Serial.begin(115200);
}


void loop()
{
    // 判断是否有有效数据
    if (Serial.available())
    {
        // 读取一个String字符串数据
        String str = Serial.readString();
        // 以%s的格式输出接收的数据
        Serial.printf("I receve %s\\n", str.c_str());
    }
}

2.2 编译下载

点击按钮或者使用快捷键编译下载代码。

如果你在下载代码时遇到下面的错误,是因为刚刚的串口监视器没有关闭,

Auto-detected: /dev/ttyUSB0
Uploading .pio/build/featheresp32/firmware.bin
esptool.py v4.2.1
Serial port /dev/ttyUSB0
Connecting...........
serial.serialutil.SerialException: device reports readiness to read but returned no data (device disconnected or multiple access on port?)
*** [upload] Error 1

点击停止监视后,继续下载即可

图片

2.3 测试

下载完成后,重新打开串口,接着发送一串消息

图片

三、总结

本节我们通过两个串口接收数据小实验,学习了串口数据的接收和发送。 下一节我们开始学习如何完成点灯。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 串口通信
    +关注

    关注

    34

    文章

    1624

    浏览量

    55510
  • 代码
    +关注

    关注

    30

    文章

    4780

    浏览量

    68529
  • 学习板
    +关注

    关注

    0

    文章

    44

    浏览量

    12159
  • ROS
    ROS
    +关注

    关注

    1

    文章

    278

    浏览量

    17001
收藏 人收藏

    评论

    相关推荐

    stm32L152RCDISCOVER进行串口通信实验接收乱码怎么解决?

    使用stm32L152RCDISCOVER开发进行串口通信实验为什么接收乱码
    发表于 03-11 07:56

    串口通信实验分享

    实验四、串口通信实验​ 自律学习坚强 ,拒绝迷茫。作者:行走的皮卡丘时间:2021/4/4喜欢就去追,这个红灯等不到,说不定下一个红灯等到了,嘻嘻!!!!!!!文章目录
    发表于 01-14 09:08

    HL配套C实验例程单片机串口接收数据

    HL配套C实验例程单片机串口接收数据,配合开发学习效果更好。
    发表于 04-11 17:04 1次下载

    ARM基础应用实验_串口通信

    ARM嵌入式应用程序架构设计实例精讲--ARM基础应用实验01串口通信
    发表于 07-08 11:08 0次下载

    ARM基础应用实验_串口通信.rar

    电子专业单片机相关知识学习教材资料——ARM基础应用实验01串口通信
    发表于 09-13 17:23 0次下载

    上位机串口通信数据接收事件程序

    上位机 串口 通信主要介绍通信串口的初始化和串口缓冲区数据的读取,因为此处只是作为指令来读取,数据量小,所以缓冲区数据的读取为有数据
    发表于 03-13 15:08 3983次阅读
    上位机<b class='flag-5'>串口</b><b class='flag-5'>通信</b>数据<b class='flag-5'>接收</b>事件程序

    串口通信与串行通信的区别和寄存器及通信实验等详细资料说明

    本文档的主要内容详细介绍的是串口通信学习课件免费下载包括了:1、串口通信与串行通信的区别,2、
    发表于 12-17 17:08 11次下载
    <b class='flag-5'>串口</b><b class='flag-5'>通信</b>与串行<b class='flag-5'>通信</b>的区别和寄存器及<b class='flag-5'>通信实验</b>等详细资料说明

    基础实验13-USART串口接收实验

    基础实验13-USART串口接收实验实验目的:掌握定时器USART接收字符串的方法。
    发表于 12-14 18:53 1次下载
    基础<b class='flag-5'>实验</b>13-USART<b class='flag-5'>串口</b><b class='flag-5'>接收</b><b class='flag-5'>实验</b>

    16 . USART 串口通信实验

    USART 串口通信实验我们知道STM32F1 内部含有非常多的通信接口,我们就来学习下USART 串口
    发表于 12-20 19:22 20次下载
    16 . USART <b class='flag-5'>串口</b><b class='flag-5'>通信实验</b>

    STM32 串口通信实验

    stm32串口通信实验UART通信实验(通用异步收发器)UART串口通信原理:UART的通信过程
    发表于 12-20 19:26 15次下载
    STM32 <b class='flag-5'>串口</b><b class='flag-5'>通信实验</b>

    ESP32学习记录<三>串口通信

    ESP32学习记录串口通信文章目录ESP32学习记录串口通信前言一、通过
    发表于 12-20 19:34 17次下载
    ESP32<b class='flag-5'>学习</b>记录<三><b class='flag-5'>串口</b><b class='flag-5'>通信</b>

    关于使用stm32核心进行USART串口通信实验

    目录一、关于串口通信1.串口通信2.USART二、USART串口通信程序1.准备工作2.
    发表于 12-24 19:00 0次下载
    关于使用stm32核心<b class='flag-5'>板</b>进行USART<b class='flag-5'>串口</b><b class='flag-5'>通信</b>的<b class='flag-5'>实验</b>

    实验四、串口通信实验

    实验四、串口通信实验​ 自律
    发表于 01-14 10:09 2次下载
    <b class='flag-5'>实验</b>四、<b class='flag-5'>串口</b><b class='flag-5'>通信实验</b>

    串口通信实验资料分享

    串口通信实验资料分享
    发表于 06-29 15:03 5次下载

    stc32G12k128使用旧清翔51实验学习UART通信实验

    stc32G12k128使用旧清翔51实验学习UART通信实验程序,利用旧版,学习32位单片机的串口
    发表于 11-21 10:21 3次下载