2017-04-20 85 views
-1

我從Blueduino板製造商的網頁此代碼段。它非常適合雙向溝通,看起來很簡單,但經過多次搜索,我無法理解它在做什麼。Arduino的從端口1讀取,發送到端口0

這是代碼:

// read from port 1, send to port 0: 
if (Serial1.available()) { 
    int inByte = Serial1.read(); 
    Serial.write(inByte); 
} 

// read from port 0, send to port 1: 
if (Serial.available()) { 
    int inByte = Serial.read(); 
    Serial1.write(inByte); 
} 

很明顯它寫入到了,反之亦然(Rx接的Tx我相信),但我不知道爲什麼。

此代碼的工作,當我在串口監視器寫在手機上收到的,但我不知道該代碼是如何考慮我在串口監視器發送消息和數據流中插入。

在此先感謝您的幫助。

回答

1

該代碼轉發從一個串行設備到另一個的消息。 最有可能在你的Arduinos串行接口(到你的電腦)到blueduino板之間。 您無法直接將PC連接到電話,也無法將blueduino電路板直接連接到PC的串行線路。

因此你需要的東西之間。 (你的arduino)轉發每一個字節。

你有基本的代碼做兩個端口是相同的。如果串行接收緩衝區中有一個字節,請將其讀取併發送到另一個端口。

+0

謝謝你,那就是我的想法。 blueduino直接通過藍牙連接到手機中的應用程序。我真正想要包裝我的大腦的是這條消息如何通過這段代碼進入流。如果我進入串口監視器並鍵入內容並按下發送,它會出現在我的手機上,同樣,如果我轉到我的手機應用程序並在其中輸入任何內容,它將出現在串行監視器上。我不明白的是這個代碼是如何實現這個的? –

+0

你的意思是哪個流?那麼你不明白的代碼是什麼? – Piglet

+0

緩衝器(數據流) –