那曲檬骨新材料有限公司

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

    文章

    1627

    瀏覽量

    55732
  • 代碼
    +關注

    關注

    30

    文章

    4828

    瀏覽量

    69055
  • 學習板
    +關注

    關注

    0

    文章

    45

    瀏覽量

    12196
  • ROS
    ROS
    +關注

    關注

    1

    文章

    280

    瀏覽量

    17100
收藏 人收藏

    評論

    相關推薦

    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 ?4002次閱讀
    上位機<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次下載
    朝阳县| 大同市| 百家乐赌博论坛| 玩百家乐官网新澳门娱乐城| 威尼斯人娱乐成| 网上玩百家乐技巧| 破解百家乐官网真人游戏| 大发888官方下载168| 百家乐网上赌博网| 中国百家乐官网游戏| BET365备用网址| 马尼拉百家乐的玩法技巧和规则| KK百家乐官网的玩法技巧和规则| 娱乐城百家乐官网论坛| 大发888游戏平台403| 百家乐大西洋城| 百家乐官网规| 百家乐官网国际娱乐网| 老牌百家乐官网娱乐城| 财众平台| 皇冠现金网址| 百家乐怎样赢| 百家乐旺门打法| 百家乐包台| 百家乐烫金筹码| 缅甸百家乐官网视频| 百家乐官网赌博导航| 长兴县| 皇家金堡娱乐城| 新利88网上娱乐| 大发888下载删除| 大发888网页版游戏| 姚记百家乐的玩法技巧和规则| 网上百家乐是叫九五至尊么| 百家乐游戏规则介绍| 美国百家乐怎么玩| 单双和百家乐游戏机厂家| 金都百家乐现金网| 长城百家乐游戏| 赌百家乐的高手| 百家乐游戏真钱游戏|