mblock是如何讓Arduino工做的(上)

從官網原版 DEMO 到 用熟悉的語言來寫 DEMO ,如何用更容易讓小朋友理解的方式來實現這個 DEMO 呢?今天開始陸續研究這整個過程如何實現。
在這以前瞭解過一些方案,例如 s4a 等一些其它方案,沒有深刻了解,從界面等方面來看基本都是基於 Scratch 2 來作的開發,Scratch 3 優化的更漂亮些來,有沒有基於 Scratch 3 的解決方案呢?本文暫時以本身看到的內容加上本身的理解,後續按照實際的研究狀況更新。web

Arduino code by block

mblock

無心之間發現了 mblock ,在 Scratch 的基礎上作了一些二次開發,選擇設備模塊,而後基於設備定製了一些元素,方便用戶更直接的使用設備。編程

  • 編輯器內選擇設備 Arduino
  • 系統內安裝 mlink 驅動程序
  • 啓動 mlink
  • 編輯器內鏈接
  • ☑️ 顯示所有可鏈接設備
  • 選擇設備端口 /dev/tty.usbmodem14101
  • 鏈接成功
  • 積木編程
  • 上傳到設備

原理分析

它是如何工做的?爲何它經過訪問網頁版本,而後能直接將積木程序轉換爲可執行代碼。
mlink 在這個過程當中起到了關鍵性做用,本地啓動的 mlink 是在本地起了一個 websocket 服務。websocket

  • 在第四步中鏈接的時候其實是創建了一個與 mlink 的服務鏈接 ws://127.0.0.1:55278/socket.io/?EIO=3&transport=websocket&sid=-XJBr-WPFDcGSJH6AAAF
  • 在選擇設備前,一直在發心跳命令查詢設備端口 getDevices
  • 選擇設備端口之後,發送了一個 open 命令,這一步編輯器已經與 Arduino 創建了鏈接
  • 上傳設備操做其實是創建了一個 wss://arduinoserver.makeblock.com/socket.io/?EIO=3&transport=websocket&sid=xDKoLUykR3DtjL5DAG1O 鏈接,這一步具體作了什麼?
  • 代碼又是以什麼形式上傳到設備上去的?

這裏還有一些疑問須要繼續深刻研究一下協議層面的內容socket

末了

大體有了想法,可是對於 mblock 的整個邏輯仍是有一些沒有理解到,還須要繼續深刻研究一下才能完善。編輯器

相關文章
相關標籤/搜索