2022-03-03 UNO軟串口

https://www.arduino.cn/forum.php?mod=viewthread&tid=47262&highlight=%E8%BD%AF%E4%B8%B2%E5%8F%A3


軟件模擬串口通信——SoftwareSerial庫的使用

除HardwareSerial外狡赐,Arduino還提供了SoftwareSerial類庫,它可以將你的其他數(shù)字引腳通過程序模擬成串口通信引腳火窒。

通常我們將Arduino UNO上自帶的串口稱為硬件串口确憨,而使用SoftwareSerial類庫模擬成的串口懂缕,稱為軟件模擬串口(簡稱軟串口)缸夹。

在Arduino UNO上莽使,提供了0(RX)、1(TX)一組硬件串口盒齿,可與外圍串口設(shè)備通信念逞,如果要連接更多的串口設(shè)備,可以使用軟串口边翁。

軟串口是由程序模擬實現(xiàn)的翎承,使用方法類似硬件串口,但有一定局限性:在Arduino UNO MEGA上部分引腳不能被作為軟串口接收引腳符匾,且軟串口接收引腳波特率建議不要超過57600叨咖。

SoftwareSerial類成員函數(shù)

軟串口類庫并非Arduino UNO核心類庫,因此使用前你需要先聲明包含SoftwareSerial.h頭文件啊胶。

其中定義的成員函數(shù)與硬件串口類似甸各,available()、begin()焰坪、read()趣倾、write()、print()某饰、println()儒恋、peek() 等用法相同,這里便不一一列舉黔漂。

此外軟串口后還有如下成員函數(shù):

SoftwareSerial()

SoftwareSerial類的構(gòu)造函數(shù)诫尽,通過它可指定軟串口RX、TX引腳炬守。

語法:

SoftwareSerial mySerial= SoftwareSerial(rxPin, txPin)

SoftwareSerial mySerial(rxPin, txPin)

參數(shù):

mySerial:用戶自定義軟件串口對象

rxPin:軟串口接收引腳

txPin:軟串口發(fā)送引腳

listen()

開啟軟串口監(jiān)聽狀態(tài)牧嫉。

Arduino UNO在同一時間僅能監(jiān)聽一個軟串口,當你需要監(jiān)聽某一軟串口時减途,需要該對象調(diào)用這個函數(shù)開啟監(jiān)聽功能酣藻。

語法:

mySerial.listen()

參數(shù):

mySerial:用戶自定義的軟件串口對象

返回值:

isListening()

監(jiān)測軟串口是否正在監(jiān)聽狀態(tài)。

語法:

mySerial.isListening()

參數(shù):

mySerial:用戶自定義的軟件串口對象

返回值:

Boolean型

True:正在監(jiān)聽

False:沒有監(jiān)聽

end()

停止監(jiān)聽軟串口观蜗。

語法:

mySerial. end()

參數(shù):

mySerial:用戶自定義的軟件串口對象

返回值:

Boolean型

True:關(guān)閉監(jiān)聽成功

False:關(guān)閉監(jiān)聽失敗

overflow()

檢測緩沖區(qū)是否溢出臊恋。

語法:

mySerial.overflow()

參數(shù):

mySerial:用戶自定義的軟件串口對象

返回值:

Boolean型

True:溢出

False:沒有溢出

建立軟串口通信

SoftwareSerial類庫是Arduino IDE默認提供的一個第三方類庫,和硬件串口不同墓捻,其聲明并沒有包含在Arduino核心庫中抖仅,因此要建立軟串口通信,首先需要聲明包含SoftwareSerial.h頭文件砖第,然后即可使用該類庫中的構(gòu)造函數(shù)撤卢,初始化一個軟串口實例。如:

SoftwareSerial mySerial(2, 3);

即是新建一個名為mySerial的軟串口梧兼,并將2號引腳作為RX端放吩,3號引腳作為TX端。完整示例如下:


/*

Arduino UNO軟串口通信

*/

#include

//實例化軟串口

SoftwareSerial mySerial(2, 3); // RX, TX

void setup()

{

Serial.begin(115200);

while (!Serial) {

}

Serial.println("Goodnight moon!");

mySerial.begin(9600);

mySerial.println("Hello, world?");

}

void loop()

{

if (mySerial.available())

Serial.write(mySerial.read());

if (Serial.available())

mySerial.write(Serial.read());

}

復制代碼

在實際使用中羽杰,你可能還會用到其他串口設(shè)備渡紫,如串口無線透傳模塊到推、串口傳感器等,只要是標準串口設(shè)備惕澎,其程序的編寫方法都基本相同莉测。

同時使用多個軟串口

當需要連接多個串口設(shè)備時,可以建立多個軟串口唧喉,但限于軟串口的實現(xiàn)原理捣卤,Arduino UNO只能同時監(jiān)聽一個軟串口,當存在多個軟串口設(shè)備時八孝,你需要使用listen() 函數(shù)指定需要監(jiān)聽的設(shè)備董朝。如程序中存在portOne、portTwo兩個軟串口對象時干跛,你欲監(jiān)聽portOne子姜,便需要使用portOne.listen() 語句,要切換監(jiān)聽port2驯鳖,便使用portTwo.listen() 語句闲询。

示例程序如下:

/*

Arduino UNO軟串口通信

通過listen()切換監(jiān)聽軟串口

*/

#include

SoftwareSerial portOne(10, 11);

SoftwareSerial portTwo(8, 9);

void setup() {

Serial.begin(9600);

while (!Serial) {

}

portOne.begin(9600);

portTwo.begin(9600);

}

void loop() {

//監(jiān)聽1號軟串口

portOne.listen();

Serial.println("Data from port one:");

while (portOne.available() > 0) {

char inByte = portOne.read();

Serial.write(inByte);

}

Serial.println();

//監(jiān)聽2號軟串口

portTwo.listen();

Serial.println("Data from port two:");

while (portTwo.available() > 0) {

char inByte = portTwo.read();

Serial.write(inByte);

}

Serial.println();

}

復制代碼

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末久免,一起剝皮案震驚了整個濱河市浅辙,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌阎姥,老刑警劉巖记舆,帶你破解...
    沈念sama閱讀 216,402評論 6 499
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異呼巴,居然都是意外死亡泽腮,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,377評論 3 392
  • 文/潘曉璐 我一進店門衣赶,熙熙樓的掌柜王于貴愁眉苦臉地迎上來诊赊,“玉大人,你說我怎么就攤上這事府瞄”贪酰” “怎么了?”我有些...
    開封第一講書人閱讀 162,483評論 0 353
  • 文/不壞的土叔 我叫張陵遵馆,是天一觀的道長鲸郊。 經(jīng)常有香客問我,道長货邓,這世上最難降的妖魔是什么秆撮? 我笑而不...
    開封第一講書人閱讀 58,165評論 1 292
  • 正文 為了忘掉前任,我火速辦了婚禮换况,結(jié)果婚禮上职辨,老公的妹妹穿的比我還像新娘盗蟆。我一直安慰自己,他們只是感情好舒裤,可當我...
    茶點故事閱讀 67,176評論 6 388
  • 文/花漫 我一把揭開白布姆涩。 她就那樣靜靜地躺著,像睡著了一般惭每。 火紅的嫁衣襯著肌膚如雪骨饿。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,146評論 1 297
  • 那天台腥,我揣著相機與錄音宏赘,去河邊找鬼。 笑死黎侈,一個胖子當著我的面吹牛察署,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播峻汉,決...
    沈念sama閱讀 40,032評論 3 417
  • 文/蒼蘭香墨 我猛地睜開眼贴汪,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了休吠?” 一聲冷哼從身側(cè)響起扳埂,我...
    開封第一講書人閱讀 38,896評論 0 274
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎瘤礁,沒想到半個月后阳懂,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,311評論 1 310
  • 正文 獨居荒郊野嶺守林人離奇死亡柜思,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,536評論 2 332
  • 正文 我和宋清朗相戀三年岩调,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片赡盘。...
    茶點故事閱讀 39,696評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡号枕,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出陨享,到底是詐尸還是另有隱情葱淳,我是刑警寧澤,帶...
    沈念sama閱讀 35,413評論 5 343
  • 正文 年R本政府宣布霉咨,位于F島的核電站蛙紫,受9級特大地震影響矮冬,放射性物質(zhì)發(fā)生泄漏趋观。R本人自食惡果不足惜崎坊,卻給世界環(huán)境...
    茶點故事閱讀 41,008評論 3 325
  • 文/蒙蒙 一复颈、第九天 我趴在偏房一處隱蔽的房頂上張望链方。 院中可真熱鬧培漏,春花似錦蘑辑、人聲如沸骡显。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,659評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽粉私。三九已至,卻和暖如春近零,著一層夾襖步出監(jiān)牢的瞬間诺核,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,815評論 1 269
  • 我被黑心中介騙來泰國打工久信, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留窖杀,地道東北人。 一個月前我還...
    沈念sama閱讀 47,698評論 2 368
  • 正文 我出身青樓裙士,卻偏偏與公主長得像入客,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子腿椎,可洞房花燭夜當晚...
    茶點故事閱讀 44,592評論 2 353

推薦閱讀更多精彩內(nèi)容