FAQ for Developer¶
编辑文档¶
欢迎大家来协同编辑文档:codelab-adapter-docs。
讨论组¶
陆续有开发者建议我构建论坛(discourse)和微信群方便大家讨论技术问题。
微信群无法沉淀有价值的内容,搜索功能太烂了,对富文本/markdown 的支持几近于无,微信不是好的办公工具。
与 CodeLab Adapter 相关技术问题,大家可以在 issue 里讨论。
也可以在 CodeLab Adapter 讨论组里讨论。
插件启停¶
目前,插件启动为线程。Python 线程需要手动管理,这部分的代码目前还比较粗糙。为了允许用户在 UI 中通过勾选来启停插件。建议插件作者使用while self._running:
,参考 extension_eim。
在 1.0 版本发布之前,插件部分我们将迁往协程,如此一来我们就能轻易管理插件的启停。目前 Python 社区很多库还不支持协程,所以我们不打算立刻迁移。
引入第三方 Python 库¶
内置的第三方库参考:wiki。
如果你需要引入新的第三方库(如OpenCV),需要在本地安装有 Python3,可以参考:servers_v2。
关于这个话题,我们日后会给出教程。
Python 与 Scratch 的双向通信¶
参考
大多数情况下,你只需要发送和接受字符串就够了,这种风格与 Scratch 内置的广播极为相近。是典型的事件驱动风格。
这篇教程主要针对那些希望去拓展 Scratch 的人。当你需要将一些复杂的程序接入 Scratch(例如接入 AI 或者接入微信,如我们制作的例子),它会对你有帮助。
如何接入 Arduino¶
陆续有开发者问到,如何使用 CodeLab Adapter 将 Arduino 接入到 Scratch 3.0 中。
有许多种方法,但我比较偏好在 Arduino 中烧入 Firmata 固件。之后以固件交互,我在两种硬件编程风格的比较论述了这样做的好处。
之后使用 Firmata python client 与 Arduino 交互。
细节可以参考 Arduino 与 Scratch 3.0。
支持哪些平台¶
首先区分 CodeLab Adapter 和 CodeLab Adapter Node。
CodeLab Adapter 既是消息中心,又是UI程序,CodeLab Adapter 可以运行在:
- Windows(win7/win8/win10)
- Mac
- linux
- Ubuntu
- Raspbian
- Android
CodeLab Adapter Node 可以运行在任何平台上,包括单片机。
覆盖配置文件¶
为了方便开发者将 CodeLab Adapter 整合到其他软件中,作为服务使用,诸如整合到 Scratch Desktop,或者整合到 docker 容器内,作为局域网消息服务……
CodeLab Adapter 允许以命令行方式启动(没有GUI)。
为了方便软件的二次分发和自定义,CodeLab Adapter 允许开发者覆盖用户配置文件(user_settings.py),进而对 CodeLab Adapter 做初始化配置。
只需要将自定义的 user_settings.py 放在 CodeLab Adapter 同级目录中即可。
如何集成到 Electron¶
只需要集成scratch3_eim即可。
如果你想使用 socketio client 连接与 Adapter 沟通,参考此处源码。
Scratch里的小绿点是怎么实现的?¶
Scratch里的小绿点用于反应网页与Adapter的连通性, 小绿点的状态由AdapterBaseClient connected 属性决定。它属于 scratch-gui,而不属于scratch extension,这部分你需要自己实现。