
眼动模块进阶开发如何扩展新Blockly积木块与自定义图片ID【免费下载链接】eye-tracking-module源师兄扩展项目: 眼动模块 | 由源师兄组织创建项目地址: https://gitcode.com/yuanshixiong/eye-tracking-module源师兄眼动模块是一个通过串口控制圆形屏幕眼动表情的开源扩展项目。本文面向新手开发者手把手教你扩展新的 Blockly 积木块并掌握自定义图片IDpic_id的使用方法帮你快速给眼睛加上更多表情与动作。 一、先认识项目里的 4 个关键文件理解扩展开发之前先了解每个文件负责什么文件作用blocksdef.js定义积木块外观下拉菜单 生成 Python 代码的规则category.json积木分类器配置决定哪些积木块出现在眼动模块工具箱里config.json模块元信息名称眼动模块、说明通过串口控制眼动模块的眼睛状态library/CircularScreenExtend.pyPython 驱动库封装了串口指令如清屏、显示图片、画图标、眨眼等 一句话总结积木块JS负责点一下Python 驱动负责发指令两者通过积木类型名对应起来。 二、快速看懂积木如何变成 Python 代码打开 blocksdef.js每个积木块都有固定双胞胎结构积木定义部分Blockly.Blocks[ohcode_extend_eye_screen_show_color]描述积木长什么样包括两个下拉菜单——串口引脚选择P1/P2/P8/P12/P15/P16和功能选择清屏、白色、红色……。代码生成部分pythonGenerator.forBlock[...]把下拉菜单的值翻译成 Python 语句。例如选红色就生成clear_screen_command(255,0,0,uart)同时自动注入from CircularScreenExtend import *的导入语句见 blocksdef.js#L19-L38。看懂这个定义 → 生成的对应关系你就具备了扩展新积木块的全部基础。 三、扩展新积木块的 5 步方法以新增一个换表情积木块为例完整流程如下第 1 步在 blocksdef.js 中定义新积木复制一个现有积木的定义改成一个全新的类型名如ohcode_extend_eye_show_pic并在appendField(new Blockly.FieldDropdown([...]))中放入你想要的选项。注意每个选项是[显示文本, 内部值]的成对结构内部值会传给代码生成器。第 2 步编写对应的生成器函数照着 blocksdef.js#L57-L77 的写法为新类型名注册pythonGenerator.forBlock函数用block.getFieldValue(字段名)取出下拉值再用switch把每个值映射成一行 Python 调用例如show_pic_command(20, uart)。第 3 步在 Python 驱动中实现命令函数打开 library/CircularScreenExtend.py确认目标函数已存在。如果还没有可以仿照 clear_screen_command 的格式组装0x5A 0xA5开头的数据帧 → 追加校验和sum 0xFF→uart.write发送。第 4 步把积木注册进工具箱编辑 category.json在contents数组里追加一项{ kind: BLOCK, type: ohcode_extend_eye_show_pic }这里的type必须与第 1 步定义的积木类型名完全一致。第 5 步编译下载验证在积木编辑器中重新加载扩展确认新积木出现在眼动模块分类下拼好后生成 Python 代码检查输出是否符合预期。 四、自定义图片ID给眼睛换表情眼动模块屏幕上预先烧录了一批图片每张图对应一个数字图片IDpic_id。核心函数是 show_pic_commandID 范围源码中有断言0 pic_id 72超出范围会直接报错调用方式show_pic_command(图片ID, uart)发送后延时 50ms 等待屏幕刷新现有映射参考向上看/向下看/向左看/向右看等表情在 blocksdef.js#L67-L76 中分别映射到了图片ID 1、11、16、3、13、17组合动画示例eye_blink 函数 通过依次播放图片ID[0, 19, 20, 21, 22, 23, 24, 25, 0]并间隔 200ms实现了眨眼动画。自定义新表情的技巧先用 Python 脚本逐个遍历 0~72 的图片ID观察屏幕内容找出你想要的表情对应的 ID把找到的 ID 写进积木下拉菜单显示文本自定义如[惊讶, 30]在生成器switch中加一行case 30: return show_pic_command(30, uart)\n若要做动画仿照eye_blink写一个循环函数即可。❓ 五、常见问题排查积木不见了检查 category.json 中的type是否与 blocksdef.js 里的积木名拼写完全一致生成代码报错确认 Python 驱动里有对应函数名且生成器返回语句以\n结尾屏幕没反应检查串口引脚下拉值是否与硬件接线一致P1/P2/P8/P12/P15/P16图片ID报错ID 必须在 0~72 之间见 CircularScreenExtend.py#L43 的断言。✅ 小结掌握积木定义 → 代码生成 → Python 驱动 → 分类注册这条链路后你就能为眼动模块不断添加新积木块、新表情和新动画。建议从最简单的单张图片ID积木练起再逐步尝试组合式动画祝扩展愉快【免费下载链接】eye-tracking-module源师兄扩展项目: 眼动模块 | 由源师兄组织创建项目地址: https://gitcode.com/yuanshixiong/eye-tracking-module创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考