从官网原版 DEMO 到 用熟悉的语言来写 DEMO ,如何用更容易让小朋友理解的方式来实现这个 DEMO 呢?今天开始陆续研究这整个过程如何实现。
在这之前了解过一些方案,例如 s4a 等一些其它方案,没有深入了解,从界面等方面来看基本都是基于 Scratch 2 来做的开发,Scratch 3 优化的更漂亮些来,有没有基于 Scratch 3 的解决方案呢?本文暂时以自己看到的内容加上自己的理解,后续按照实际的研究情况更新。
mblock
无意之间发现了 mblock ,在 Scratch 的基础上做了一些二次开发,选择设备模块,然后基于设备定制了一些元素,方便用户更直接的使用设备。
- 编辑器内选择设备 Arduino
- 系统内安装 mlink 驱动程序
- 启动 mlink
- 编辑器内连接
- ☑️ 显示全部可连接设备
- 选择设备端口
/dev/tty.usbmodem14101
- 连接成功
- 积木编程
- 上传到设备
原理分析
它是如何工作的?为什么它通过访问网页版本,然后能直接将积木程序转换为可执行代码。
mlink 在这个过程中起到了关键性作用,本地启动的 mlink 是在本地起了一个 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
连接,这一步具体做了什么? - 代码又是以什么形式上传到设备上去的?
这里还有一些疑问需要继续深入研究一下协议层面的内容
末了
大致有了想法,但是对于 mblock 的整个逻辑还是有一些没有理解到,还需要继续深入研究一下才能完善。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。