中文 | English

探索micro:bit的奧妙:一對一

譯者: 江宗諭

單播,意即傳送訊息給單一接收者,是我們在網際網路上溝通典型的方式。例如,假如我們要在網際網路上瀏覽一個網頁,我們傳送單播訊息給網頁伺服器,當伺服器接收到我們傳送的訊息後,反過來會傳送給我們這個網頁,呈現在我們的瀏覽器上。

這篇文章中,讀者可以試著傳送單播訊息給朋友或隊友的 micro:bit,讀者也能學到電腦網路的概念,包括:

  • 單播的概念
  • 通訊協定的概念
  • 位址及 IP 位址的概念
  • 資料包(Data packet)及資料頭(Header)的概念

因此,讀者們將會需要:

  • 2 個micro:bit
  • 1 塊白板
  • 白板筆/便利貼
  • 一位隊友

背景

這篇文章主要涵蓋單播,但「單播」究竟是什麼?「單播」就是傳輸訊息給單一的接收者。當傳輸訊息給彼此時,電腦使用「通訊協定」。

小知識:通訊協定

通訊協定是一套規則,透過這套規則,訊息得以通過網路傳送。

簡而言之,「通訊協定」定義電腦應如何發送訊息,以及當電腦收到一則訊息時,它應該做什麼。在網際網路上,每台電腦或裝置遵循著網際網路的通訊協定。

根據網際網路的通訊協定,每一個裝置被給予一個獨特的位址,被稱為「IP 位址」。請記得,我們在前面兩篇文章教導廣播和多播時,已經使用過特殊的位址。在這篇文章,我們視之為單播位址,而「IP 位址」則被用於網際網路上單播的使用。

讀者的 micro:bit 也有一個位址(但和 IP 位址有點不太一樣),而您已經藉由改變群組 ID,局部改變您的 micro:bit 位址。

當兩台電腦互相溝通,傳送裝置傳送資料包給接收裝置。

小知識:資料包

「資料包」是指透過網路傳送的一份資料。這份資料擁有實際的訊息部分,例如,一張照片或一串文字,以及一份或多份的資料頭(Header)。一份資料頭包含對通訊協定有用的資訊,例如,傳送裝置和接收裝置的 IP 位址。

圖一 (圖片來源:https://microbit.nominetresearch.uk/networking-book-online/)

上圖顯示,資料和一份資料頭如何組成一份資料包。在這張圖中,除了傳送裝置和接收裝置的位址外,資料頭還包含了訊息的種類。而訊息的種類將告訴接收裝置,它將收到的訊息是什麼,例如一張照片或一串文字。請務必記得,在前面兩篇文章中,讀者們親自撰寫了接收程式,以接收特定類型的訊息。若讀者的資料包含有資料頭,而資料頭裡面含有訊息種類,那麼撰寫接收程式將會比較容易。

本篇文章中,為了單播至另外一個 micro:bit,讀者將藉由加入來源和目的地位址,創造一個資料包。

來寫程式囉:傳送與接收單播訊息

在這個段落,讀者將替自己的 micro:bit 撰寫程式,以傳送並接收單播訊息,完成四個任務。

為讓單播運作,您的 micro:bit 的廣播功能,應當接收所有傳送的訊息,但您所撰寫的程式,只應閱讀標明您的位址的信息。舉個例子來說,就像看見所有的信件寄到您家,但您只打開信封上有您的名字的信件。

任務1:佈署您的廣播

描述:為了收到任何人傳送的任意資料包,您需要使用廣播功能作為底層的溝通。

指引:設定您的廣播群組 ID,如同前文〈探索 micor:bit 的奧妙:廣播通訊〉

任務2:設計資料頭

描述:擔負傳送任務的 micro:bit,在傳送前,需要替每份訊息加上一個資料頭。資料頭的內容包括:傳送裝置的位址與接收裝置的位址。針對訊息的資料頭,您將創造特殊的字串。

指引:首先,建構傳送裝置和接收裝置的資料頭。與您的隊友一起,選擇兩個字母的字串,作為 micro:bit 的位址,一個字串給您自己的 micro:bit 使用;另一個給您的隊友的 micro:bit 使用。

接下來,加入傳送裝置和接收裝置的字串,以創造資料頭。您將使用位於 MakeCode 程式積木編輯器中的「文字」選單下的程式積木,創造屬於您自己的資料頭,請參考下圖。

程式編輯器中的「文字」程式積木(圖片來源:https://microbit.nominetresearch.uk/networking-book-online/)

任務3:創造資料包並傳送

描述:現在,創造一個屬於你自己的資料包吧!如圖一所示,資料包包括了訊息及資料頭。最終,您的資料包會包括傳送裝置的位址、接收裝置的位置及訊息。

指引:選擇一個字串作為您的訊息,例如,「Hello」。請使用文字程式積木,將您的文字字串加入資料頭。

任務4:接收資料包

描述:當擔任接收裝置的 micro:bit 接收到一個資料包,它需要決定是否接收或忽略這個資料包。請注意,擔任接收裝置的 micro:bit 接收到單一字串,但它知道這個由下面三項所組成:

  • 傳送裝置的位址:頭兩個字母
  • 接收裝置的位址:接下來兩個字母
  • 傳送裝置所要傳遞的訊息:剩餘的字串

接收裝置需要使用這些資料,判斷哪些資料包是傳送給它的。

指引:將接收到的訊息,分成傳送裝置位址變數、接收裝置位址變數,以及所要傳送的訊息變數。請使用文字積木方塊,例如,「字串截取」和「字串比較」。

確認是否接收裝置的位址,等於您的 micro:bit 的位址。如果是的話,您的 micro:bit 便是正確的接收裝置。如果您的 micro:bit 不是正確的接收裝置,就請忽略那則訊息。

(特此致謝作者 Cigdem Sengu l與 Anthony Kirby,以開放授權方式讓翻譯,本文僅為針對重點摘譯,若想進一步閱讀原文,請見。)

分享到社群