Gmii.tw
  • Home
    • 關於我們 >
      • 關於全佑
      • 歷年成果
  • 線上課程
    • 線上課程列表
  • 商品資訊
    • 應用部落格
    • KittenBot >
      • 合格師資名單
      • 相關影片
      • Kittenblock 下載
    • GMII ROBOT >
      • GMII robot controller
    • 應用APP下載
  • 連絡我們
    • 人才招募

Meowbit SD-wireless如何避免傳輸錯誤

5/5/2020

0 評論

 
圖片
身為meowbit的愛用者來說,若可以用meowbit設計出一款無線對戰遊戲肯定是帥的讓班上的孩子們目瞪口呆,但源生自micro:bit廣播功能的擴展卡SD-wireless要達成雙人遊戲又在傳輸上不出現錯誤,真是一門學問呢!
首先,讓我們先釐清訊號傳輸的過程中為什麼會出現錯誤訊息呢?
其次,我們會將傳輸過程出現錯誤到解決的方法分成四個步驟說明
  1. 本機發送訊號錯誤原因
  2. 本機發送訊號解決方法
  3. 雙主機對傳訊號錯誤原因
  4. 雙機機對傳訊號錯誤避免的初步討論方式
圖片
​▲觀察上圖,我們可以發現 microbit及 SD-wireless 所使用的訊號發送方式都是 Radio (廣播)方式
 
早期有玩過車隊的人都知道,Radio(無線電)傳輸方式多麼的酷炫,找到自己的頻段,有一群人跟車要在10公里以內,雖然有話語權的限制,卻在有限距離的狀態下大夥們能夠暢所欲言。
 
當然,回想Radio的溝通過程後,我們也不難發現 ☹ 0 ‘:.’: 這樣的錯誤訊息是怎麼回事。
 
因此,要先從第一段,本機發訊出現錯誤訊號的問題開始解決。
 
首先我們先寫出一段SD-wireless要不斷的將”控制資訊”與”角色位置”傳遞出去的程式
圖片
▲由於對戰的遊戲包含物理機制,因此控制傳輸內容有6項,加上遊戲更新過程中傳遞角色位置資訊
​▲控制過程中發生sd-wireless錯誤訊息
 
廣播(Radio)訊息傳遞的過程中,訊號會以串列的方式傳輸,因此當同一個時間中想要將兩段訊息透過 sd-wireless 傳輸出去,就會發生以上的錯誤訊息。
 
單機的解決方式上,我們可以透過傳輸佔用頻道的狀態來解決傳輸衝突的問題
圖片
​▲設計一個開關變數 sd_timer_click
 
當座標訊息傳輸的過程中 sd_timer_click 變數會開啟,此時間所有的操控都會因為判斷,而無法傳遞訊號,由此一來就可以避免單機上訊息發送的衝突。
​▲透過佔用傳輸的變數開關,避免了錯誤訊息
 
再來我們會將兩台主機安裝以上相同的程式,來進行遊戲
​▲同程式雙機運行狀態
 
很快的我們便會發現,訊號的"傳送"與"輸入"同時發生,因此其中一台主機便會產生錯誤訊息。
解決以上問題邏輯上會有三個步驟:
 
第一:減少訊號的傳遞量就可以減少錯誤發生
第二:將訊息透過排隊的方式傳送出去
第三:兩台機器更新訊號的頻率相同,可達成訊號平行不相交
 
因此第一步,我們要將按鍵”鬆開”的訊號項目交給接收端處理訊息,如此一來便可以減少兩項訊號傳輸
 
第二步,設計一個暫存變數 (temp) 將按鍵按下後改變變數,變數會於固定時間送出訊息
圖片
​▲控制時發出訊號,傳輸的訊號時間會非常難以掌控,因此透過暫存(temp)變數存取資訊
 
當然,小編採用的寫法是比較簡單的方式,覆蓋前一筆訊息,若想要每個步驟都可以存取發送,則可以採取(FIFO)先進先出的暫存方式處裡欲將發送的訊號串
圖片
▲SD-wireless 發送訊息透過遊戲更新時送出。 
​
以上遊戲更新的間隔,注意使用(質數),因為任兩質數的公倍數為兩質數相乘的倍數,因此可以更容易的判斷本機發送訊號可能會錯誤的時機點。
圖片
▲兩質數時脈交會的過程中,其中控制訊息不發送,僅發送較為重要的位置同步訊息 
​
完成以上的訊息傳送迴避後,將遊戲燒錄於兩台主機,則可以避免錯誤訊號出現大約兩分鐘左右。
▲最終的雙人遊戲控制版本 
​
以上是,研究三天來的錯誤解決方法,若您有更好的方式,或任何問題歡迎留言給我們喔。
 
2020/05/05 – by哈編
0 評論



發表回覆。

    作者

    將一些常見問題提出解決方案。

    發布紀錄

    五月 2020
    四月 2020
    三月 2020
    二月 2020
    一月 2020
    十二月 2019
    十一月 2019
    十月 2019
    九月 2019
    七月 2019
    四月 2019
    二月 2019
    一月 2019
    十二月 2018
    十一月 2018
    十月 2018
    四月 2018
    三月 2018
    十月 2017
    八月 2017
    七月 2017
    六月 2017

    類別

    全部
    Birdge D51
    Kblock App
    Kittenblock
    KOI
    Makecode
    Meowbit
    Micro:bit
    Nanobit
    Powerbrick
    Robotbit
    工商活動

    RSS 訂閱

图片

全佑電腦- 機器人科學館 
© 2013 All RightReserved.

TEL:(+886) 03-9560365
265 宜蘭縣羅東鎮公正路298號

No.298, Gongzheng Rd., Luodong Township, Yilan County 265, Taiwan (R.O.C.)

聯絡我們

宜蘭總公司
台北聯絡處
Proudly powered by Weebly
  • Home
    • 關於我們 >
      • 關於全佑
      • 歷年成果
  • 線上課程
    • 線上課程列表
  • 商品資訊
    • 應用部落格
    • KittenBot >
      • 合格師資名單
      • 相關影片
      • Kittenblock 下載
    • GMII ROBOT >
      • GMII robot controller
    • 應用APP下載
  • 連絡我們
    • 人才招募