你好,我是愛吃魚香ROS的小魚。上一節(jié)我們完成了第一個Hello World工程,學習使用了串口模塊的初始化和發(fā)送,本節(jié)我們再來一個串口接收小實驗,把串口收發(fā)數據補齊。
本教程所使用硬件平臺為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 使用串口監(jiān)視器發(fā)送消息
使用快捷鍵,編譯 Ctrl+Alt+B
、上傳 Ctrl+Alt+U
,接著準備發(fā)送數據
因為要發(fā)送消息,這里我們換一個收發(fā)分離的串口監(jiān)視器來進行數據發(fā)送
使用Ctrl+Alt+~
打開終端,接著在終端中你可以看到串口監(jiān)視器一欄
接著打開我們板子對應的串口設備
?選擇串口編號
?設置波特率
?點擊開始監(jiān)視
發(fā)送測試
?輸入數據
?點擊發(fā)送
?查看返回
嘗試發(fā)送12
可以看到收到了兩條返回,這是因為我們每次只接收一個數據,所以即使發(fā)送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 編譯下載
點擊按鈕或者使用快捷鍵編譯下載代碼。
如果你在下載代碼時遇到下面的錯誤,是因為剛剛的串口監(jiān)視器沒有關閉,
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
點擊停止監(jiān)視后,繼續(xù)下載即可
2.3 測試
下載完成后,重新打開串口,接著發(fā)送一串消息
三、總結
本節(jié)我們通過兩個串口接收數據小實驗,學習了串口數據的接收和發(fā)送。 下一節(jié)我們開始學習如何完成點燈。
-
串口通信
+關注
關注
34文章
1624瀏覽量
55508 -
代碼
+關注
關注
30文章
4779瀏覽量
68524 -
學習板
+關注
關注
0文章
44瀏覽量
12159 -
ROS
+關注
關注
1文章
278瀏覽量
17001
發(fā)布評論請先 登錄
相關推薦
評論