智能硬件机器人嵌入式硬件开发【免费下载链接】ElectronBot项目地址https://gitcode.com/gh_mirrors/el/ElectronBot点击查看免费下载AutoHotkeyAHK是一种可以用记事本编辑、保存即运行的脚本语言本仓库的3.Software/_Tools/AHK-ExpansionPack目录提供了一整套基于稚晖君 ElectronBot SDK 的玩法扩展示例覆盖微信控制、智能家居、人脸/手势同步、网页远程控制、语音交互、热拔插推送表情与热键调试等八大场景。读完本文你将掌握如何使用 AutoHotkey 直接通过DllCall调用 ElectronBot 的底层 SDK 接口理解六自由度关节参数的含义与取值范围并能直接复现、组合这些示例把 ElectronBot 变成可被脚本任意调度的桌面机器人。一、为什么用 AutoHotkey 驱动 ElectronBotElectronBot 官方上位机SDK Player负责姿势调整、表情推送但每次都要打开上位机、手动拖参数、再同步。而 AutoHotkey 天生就是为监听系统事件、模拟键盘、按条件触发动作而生的脚本语言把它和 ElectronBotSDK 结合就能实现把任何系统事件时间、进程、热键、微信消息、语音、网络请求转成机器人的姿势或表情免编译、免界面记事本编辑.ahk文件后直接运行复用 AHK 自身对电脑状态的判断与调用能力例如判断时间设置电脑音量ElectronBot 做姿势时同时播报自定义语音判断进程状态决定开关某程序等。所有示例都采用同一套 DllCall 调用模式脚本通过DllCall加载目录下的ElectronBotSDK-LowLevel.dll/ElectronBotSDK-Player.dll并调用导出的AHK_*系列 C 接口将参数同步上传到 ElectronBot因此无需任何前端界面。二、环境准备安装与编辑到 AutoHotkey 官网下载安装包体积约 3MB建议使用默认选项安装。虽然 AHK 可以将解释器与脚本设为同名实现免安装运行但安装后更方便用右键菜单Edit Script直接编辑、调试脚本。安装完成后对任意.ahk文件右键选择Edit Script即可用记事本打开编辑保存后双击即可运行SetBatchLines -1等脚本头可保证执行效率。每个示例目录内都附带了详细截图与代码注释示例运行前先退出其它上位机确保只有当前脚本独占连接 ElectronBot。三、核心前置SDK 的 AHK 接口与姿势参数约定3.1 LowLevel SDK 导出的 C 接口目录3.Software/_Tools/AHK-ExpansionPack/ElectronBotSDK/ElectronBotSDK源码/ElectronBotSDK-LowLevel/src/electron_low_level.h定义了供 AHK 调用的extern C导出函数接口作用AHK_New()创建 SDK 对象并返回指针AHK_Connect(void*)/AHK_Disconnect(void*)连接 / 断开 USB 设备AHK_SetJointAngles(void*, j1..j6, enable)设置六自由度关节角度AHK_SetImageSrc_Path(void*, path)设置屏幕图像文件路径AHK_SetImageSrc_MatData(void*, data)设置屏幕图像内存像素数据AHK_Sync(void*)将以上设置一次性同步上传AHK_GetJointAngles(void*, float*)回读当前关节角度AHK_SetExtraData/AHK_GetExtraData读写额外数据通道示例中未实际测试Player SDK 额外导出AHK_Play播放表情/视频、AHK_Stop、AHK_SetPlaySpeed、AHK_GetPose见 electron_player.h。3.2 六自由度姿势参数表示例脚本统一封装了LowLevelSDK类其同步姿势()方法的参数顺序与含义与官方上位机一致如下参数含义合法范围参1j1头部-15 ~ 15参2j6身体转向-90 ~ 90参3j2左臂展开-30 ~ 30参4j3左臂抬起-180 ~ 180参5j4右臂展开-30 ~ 30参6j5右臂抬起-180 ~ 180参7可选表情/图片文件路径本地文件路径调用时先DllCall(...\AHK_SetJointAngles, ...)设置角度若指定了图片路径则再AHK_SetImageSrc_Path设置图像最后AHK_Sync一次上传。注意封装层的参数顺序头部、身体转向、左臂展开、左臂抬起、右臂展开、右臂抬起与原 C SDK 的SetJointAngles顺序并不一一对应脚本注释中已标明原SDK对应j1头部、j2左臂展开、j3右臂抬起、j4右臂展开、j5左臂抬起、j6身体转向。3.3 底层图像帧规格官方底层 SDK 中frameBufferTx[2][240*240*3]定义了 240×240 的 RGB 屏幕帧缓冲见 electron_low_level.h这解释了为何后续人脸、视频抽帧示例都要把图像resize到 240×240SDK 默认的 USB VID 为0x1001、PID 为0x8023。四、示例 1通过微信控制 ElectronBot脚本 Acc取微信消息来控制ElectronBot.ahk 演示了如何用 Windows 无障碍AccessibleAcc接口读取微信 PC 版的消息内容把收到的指定格式消息当作控制信号。使用方法退出其它上位机 → 打开微信 PC 版与脚本 → 向自己建议置顶方便收发发送形如姿势∶15,0,0,0,30,150的命令 → 脚本每隔 1 秒读取一次最新消息并同步到 ElectronBot。兼容性适配 2022.8.3 当天微信 PC 版最新版本 3.7.5.23作者自测 3.4.5.27 ~ 3.7.5.23 可用且将微信窗口最小化可后台接收。调试按F3模拟读取微信消息并同步按F4直接同步一组固定姿势用于验证 SDK 链路是否正常。核心逻辑F1循环: WinGet, IDHwnd, ID , 微信 ahk_class WeChatMainWndForPC if WinExist(ahk_id IDHwnd) { oAcc : AccGet(IDHwnd, 4.1.2.2.2.1.1.1.1.1.1.2.1.1.1) ; 微信用户名 oAcc2 : AccGet(IDHwnd, 4.1.2.2.2.1.1.1.1.1.1.2.2.1) ; 第一个用户的最后一条信息 微信用户名 : oAcc.accName(oAcc.accChildCount) 最后一条信息 : oAcc2.accName(oAcc2.accChildCount) if (InStr(最后一条信息, 姿势)!0) { ; 用姿势二字作为自定义命令识别 分割成数组 : StrSplit(最后一条信息, ,) 姿势.同步姿势(RegExReplace(分割成数组[1], \D), 分割成数组[2], 分割成数组[3], 分割成数组[4], 分割成数组[5], 分割成数组[6]) } } Return要点AccGet通过DllCall加载oleacc.dll并调用AccessibleObjectFromWindow再按4.1.2.2...这种路径逐级索引子树节点RegExReplace(分割成数组[1], \D)会把姿势∶15中的非数字字符剥离从而得到第 1 个关节角度。若右下角没有收到微信信息说明 Acc 无法获取微信内容微信版本升级可能导致树路径失效若收到了信息但机器人无反应请退出其它上位机并重新插拔 ElectronBot。五、示例 2用继电器硬改实现对智能家居的控制串口通信_长按示例.ahk 采用硬改思路以小米无线开关为例用 CH340 驱动的继电器模拟按键的单击、双击、长按从而让电脑经由 AHK 的 RS232 串口通信直接控制智能家居。其串口参数如下RS232_Port : COM1 ; 改成继电器对应的COM号 RS232_Baud : 9600 RS232_Parity : N RS232_Data : 8 RS232_Stop : 1 RS232_Settings : RS232_Port :baud RS232_Baud parity RS232_Parity data RS232_Data stop RS232_Stop dtrOff长按 1.3 秒的实现按下 → 延时 → 抬起RS232_Write(RS232_FileHandle, 0xA0,0x01,0x03,0xA4) ; 按下 Sleep 1300 ; 延时1.3秒长按效果 RS232_Write(RS232_FileHandle, 0xA0,0x01,0x02,0xA3) ; 抬起双击则是在两次按下/抬起之间插入约 100ms 间隔。底层RS232_Initialize用BuildCommDCB构造 DCB、CreateFile打开串口、SetCommState/SetCommTimeouts完成配置RS232_Write把逗号分隔的十六进制字节解析写入缓冲区后调用WriteFile发送。脚本还处理了COM 口大于 9 时必须加\\.\前缀的经典坑位并用\\.\方式支持 USB-Serial 转接设备。作者也提示除继电器外完全可以用 Arduino MOS 管实现同样的单击/双击/长按逻辑。六、示例 3量子纠缠Demo摄像头人脸同步量子纠缠Demo.ahk 模仿稚晖君视频中的量子纠缠效果从摄像头截取人脸实时同步到 ElectronBot 的脸部屏幕同时做出右手挥手动作。运行前需把脚本与 haarcascade_frontalface_default.xml 放到ElectronBotSDK目录并确保摄像头画面中有可识别面部。核心流程; 加载OpenCV COM组件 hOpenCV : DllCall(LoadLibrary, Str, opencv_world455.dll, Ptr) hOpenCVCom : DllCall(LoadLibrary, Str, autoit_opencv_com455.dll, Ptr) cv : ComObjCreate(OpenCV.cv) Cap : ComObjCreate(OpenCV.CV.VideoCapture) Cap.open(0) ; 摄像头编号从0开始 faceCascade : ComObjCreate(Opencv.cv.CascadeClassifier) faceCascade.load(haarcascade_frontalface_default.xml) Loop { Ret : Cap.read(Frame) frame : cv.rotate(frame, 2) ; 适配ElectronBot的屏幕方向 faces : faceCascade.detectMultiScale(Frame, 1.10, 100) if (faces.MaxIndex()-1) { frame : Crop(frame, faces[0]) ; 裁剪人像 frame : cv.resize(frame, ComArrayMake([240, 240])) ; 缩放到240x240 frame : cv.cvtColor(frame, 3) ; CV_BGRA2RGB : 3 姿势.设置姿势(15, 0, ( (_Waving:!_Waving) ? 0 : 30), 130, 0, 0) ; 挥动左手 姿势.设置图像Data(frame.data()) 姿势.同步() } else { 姿势.同步姿势(0, 0, 0, 0, 0, 0) ; 检测不到面部就回正 } }实现细节Crop函数通过对Img.Row/Img.Col的vconcat/hconcat实现矩形裁剪像素数据经AHK_SetImageSrc_MatData直接以内存指针上传与 3.3 节的 240×240 帧缓冲规格对应。若画面无图像先尝试删除cv.rotate或改用注释中的纯人脸识别完整显示CV.imshow排查摄像头取流。七、示例 4网页控制与网络互动目录 4.ElectronBot网页控制与网络互动 演示了两件事网页控制网页控制ElectronBot.ahk 用 AHK 内置的HttpServer类在本地起一个 HTTP 服务默认端口 8866把网页路径映射到控制函数paths : {/ : Func(主界面) , /DianTou : Func(点头) , /ZuoShou : Func(左手驱动) , /YouShou : Func(右手驱动) , /BiaoQing : Func(表情测试)} Server : New HttpServer() Server.LoadMimes(mime.types) Server.SetPaths(paths) HTTP服务端口 : 8866 Server.Serve(HTTP服务端口) Run http://127.0.0.1:%HTTP服务端口%/ ; 启动后自动打开控制台网页页面上的点头左手驱动右手驱动表情测试按钮通过window.location.href跳转到对应路由服务端 handler 再调用姿势.同步姿势(...)或表情.播放表情(video.mp4)并返回一段history.go(-1)的脚本让浏览器退回主界面。mime.types为静态文件提供 Content-Type 映射。因为监听的是本机端口手机或电脑只要访问同一网络内的该地址即可远程操控 ElectronBot。TCP 互动Tcp通信测试【主机端】.ahk 与Tcp通信测试【接收端】.ahk用SocketTCP类基于 Winsock 的socket/bind/listen/accept/send/recvWSAAsyncSelect事件模型验证两台电脑之间的通信主机端监听0.0.0.0:33345按F1发送姿势∶15,0,0,0,30,150、按F2发送回正指令接收端解析后驱动各自的 ElectronBot——由此可在局域网甚至公网 IP 下远程同步两台机器人的互动反应。八、示例 5摄像头手势识别与动作同步此示例需要配合另一个 AHK 手势识别项目VisualGestureRecognition使用将本目录的MyAHKScript、Lib、ElectronBotSDK三个文件夹放到手势识别项目主脚本同目录并覆盖替换后重新启动并开启手势识别即可。手势参数建议参考 推荐手势设置.jpg 中标注的刷新间隔、画面旋转角度与相同命令识别间隔进行配置。预设的手势与机器人动作对应关系识别到的手势ElectronBot 反应双手放下回正单手举起握拳同步举手单手举起做剪刀手同步剪刀手双手举起握拳执行一套预设长动作目录 MyAHKScript 下的1-1-9-9.ahk等文件即双手举起握拳的长动作编排通过大量Sleep与同步姿势序列组合出招手、侧身拍打、高举晃动、拜拜等连贯动作结束后调用表情.播放表情(video.mp4)收尾。文件中还示范了Global LLSDKFilePath : test.jpg这种全局变量指定表情的技巧让该脚本内所有同步姿势自动附带同一张图片。注意使用说明.txt明确指出此示例是用不断识别后以新进程方式连接并驱动 ElectronBot实现的仅适合演示若要稳定使用应把整个流程写进同一个脚本进程内。九、示例 6语音控制 ElectronBot6.语音控制ElectronBot.ahk 调用 Windows 自带 APISAPI实现语音识别与播报让 ElectronBot 变成语音助手唤醒流程说出唤醒词电子电子识别器回调里播放同步语音在呢用ComObjCreate(SAPI.SpVoice).Speak(...)的同步播报顺带充当延时并打开命令执行开关SetTimer 无应答重置, -5000实现唤醒后 5 秒无命令自动失效。命令表你好招手 2 次、左手抬左臂、右手抬右臂、点头点头 2 下、开心播放 video.mp4执行后异步播报你说了...。Class 唤醒词类 extends SpeechRecognizer { OnRecognize(Text) { if (Text 电子电子) { ToolTip % 唤醒词 Text, A_ScreenWidth//1.13, A_ScreenHeight//1.13 ComObjCreate(SAPI.SpVoice).Speak(在呢) 执行命令开关 : 1 SetTimer 无应答重置, -5000 } } }SpeechRecognizer类Uberi 封装的 SAPI 封装通过SAPI.SpInprocRecognizer获取音频输入CreateGrammar后用AddWordTransition注册短语规则识别结果经SpeechRecognizer_Recognition回调分发到OnRecognizeTTS类则基于SAPI.SpVoice提供Speak/SpeakWait/SetRate/SetVolume/SetPitch等能力。系统要求语音识别依赖系统自带的语音 API精简版系统可能被删减若脚本运行时报错则说明缺少 TTS 组件用原版镜像安装的系统基本可用。作者已提供 SDK 调用方法具体语音方案可自行替换。十、示例 7连接 ElectronBot 时自动推送表情ElectronBot 每次接入 USB 都会先显示默认花屏7.连接ElectronBot时自动推送表情.ahk 通过注册 USB 设备监控事件让插入瞬间自动同步指定表情与姿势OnMessage(0x219, WM_DEVICECHANGE) ; 注册USB设备监控事件 拔出时数组 : JEE_DeviceList() ; 记录拔出前的设备列表 WM_DEVICECHANGE(wParam, lParam, msg, hwnd) { Global if (wParam0x8000) { ; DBT_DEVICEARRIVAL 插入时 插入时数组 : JEE_DeviceList() Loop % 插入时数组.Length() { if (插入时数组[A_Index]!拔出时数组[A_Index]) { ElectronBot初始化(新进程代码) Break } } } else if (wParam0x8004) { ; DBT_DEVICEREMOVECOMPLETE 拔出时 拔出时数组 : JEE_DeviceList() } }JEE_DeviceList通过setupapi.dll枚举 USB 设备并读取DEVPKEY_Device_FriendlyName筛选含(COM...)的设备名。检测到新设备插入后脚本把一段新进程代码AHK_New → AHK_Connect → AHK_SetJointAngles → AHK_SetImageSrc_Path → AHK_Sync → AHK_Disconnect的最小化流程通过WScript.Shell.Exec以临时进程方式执行从而在不阻塞主脚本的前提下完成表情推送。脚本注释中还提供了按 COM 端口过滤如InStr(设备名, (COM8)!0的写法以及播放 Player 表情的模板代码。此脚本可与示例 8 合并实现热拔插同步表情 热键连接调试一体化。十一、示例 8热键快速调试 ElectronBot日常调试需要打开上位机调整参数再同步而 8.热键快速调试ElectronBot.ahk 把常用调试动作绑定到键盘热键运行即测热键动作F1 / F2头部上 / 头部下F3弹出文件选择框选择表情文件并播放Up / Down左手抬起 / 放下Left / Right右手抬起 / 放下F1::姿势.同步姿势(15, 0, 0, 0, 0, 0) ; 头部上 F3:: FileSelectFile, 返回路径, , ,选择ElectronBot的表情, 文件(*.jpg; *.png; *.bmp; *.mp4; *.mov) 表情.播放表情(返回路径) Return脚本启动时会先执行一组点头动作同步姿势(15,...)后Sleep 100再同步姿势(0,...)并附带test.jpg以确认连接成功。PlayerSDK.播放表情内部会先AHK_Stop再重建对象重新AHK_Connect因此连续播放两个表情之间必须保证至少 150ms 延时避免线程抢占卡死。十二、进阶组合与扩展思路除 8 个现成示例外一套演示动作示例.ahk 提供了更完整的动作编排参考并给出了两个可直接复用的函数异步抽帧上传表情(video)用 OpenCV 的VideoCapture读取视频按fps/10的间隔抽帧10 帧/秒每帧resize到 240×240、cvtColor(..., 3)转 RGB 后通过AHK_SetImageSrc_MatData上传——这是让表情动起来的关键因为 10 帧/秒的单帧间隔为 166ms故动作间的Sleep建议不小于 180ms。脚本还处理了中文路径复制到A_AppDataCommon下再打开的问题。异步播放音频(file)基于winmm.dll的mciSendString实现异步播放可让机器人动作配上音效。在此基础上可以自然衍生更多玩法判断时间自动调音量、姿势触发语音播报、监听进程状态开关程序、把示例 7 与示例 8 合并等。几处容易踩坑的约定值得牢记ElectronBot 需要64 位 AHK 解释器示例 7 对此有显式检查提示运行任何控制脚本前先退出其它上位机独占 USB 连接同步姿势的参数有合法范围见 3.2 表格超范围无效Player 播放表情前后保留至少 150ms 延时。十三、仓库资源索引玩法总览与使用说明3.Software/_Tools/AHK-ExpansionPack/README.md各示例脚本与截图3.Software/_Tools/AHK-ExpansionPack/下1.~8.目录及根目录脚本AHK 版 SDK 源码3.Software/_Tools/AHK-ExpansionPack/ElectronBotSDK/ElectronBotSDK源码/LowLevel 与 Player 的AHK_*导出实现官方 C 底层 SDKelectron_low_level.h、electron_low_level.cppPlayer 上层封装electron_player.h、sample.cpp完整 SDK 依赖DLL、OpenCV、表情视频3.Software/_Tools/AHK-ExpansionPack/ElectronBotSDK/借助这份扩展包ElectronBot 不再局限于上位机的手动操作而是可以被微信、语音、网页、手势、热键乃至任何 AHK 可感知的系统事件所驱动——把它当作一个可编程的桌面实体交互终端来使用。赞分享智能硬件机器人嵌入式硬件开发【免费下载链接】ElectronBot项目地址https://gitcode.com/gh_mirrors/el/ElectronBot点击查看免费下载相关推荐3种方案玩转虚拟显示驱动Windows多屏扩展完全指南3种方案玩转虚拟显示驱动Windows多屏扩展完全指南 虚拟显示驱动是什么 虚拟显示驱动通过软件模拟额外显示器让Windows系统识别不存在的物理屏幕实驱动开发React Redux 9.x 终极指南Redux 官方 React 绑定为何是状态管理的最优解React Redux 9.x 终极指南Redux 官方 React 绑定为何是状态管理的最优解 React Redux 是 Redux 官方的 React前端AutoHotkey扩展库与功能模块详解AutoHotkey扩展库与功能模块详解 本文详细解析了AutoHotkey的四大核心功能模块文件系统操作库、正则表达式引擎、进程管理与系统交互模块、数学计算RPAGUI 自动化桌面应用上一篇Qwopus3.5-4B-Coder-MTP-GGUF高级教程构建自定义工具调用系统的完整流程下一篇【亲测免费】 探索 LunarVim为 Neovim 打造的现代 IDE 层创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
企业数字化 ERP 产品动态
相关推荐
react-vis 雷达图(RadarChart)完全指南:domains 配置、样式定制与交互实战 数据可视化图表库前端 【免费下载链接】react-vis Data Visualization Components 项目地址: https://gitcode.com/gh_mirrors/re/react-vis 点击查看 免费下载 说明:本文基于当前仓库中 react-vis 的官方文档 docs/radar-chart.md 展开,并结… · 2026/9/25 7:10:00
大模型Agent技能库:从Prompt到可复用技能包的工程实践 最近好几个团队朋友都在聊同一个话题:大模型 Agent 跑起来不难,三行代码就能让模型调工具,可真要多步任务稳定执行、跨项目复用,几乎每个人都在重复造轮子。我自己的做法是把这类可复用的能力沉淀成一套结构化的技能包,… · 2026/9/25 7:09:54
上下文管理实战:何时开新会话、何时压缩,避免会话越用越慢 1. 上下文管理的本质:为什么你的会话越用越慢很多人第一次意识到上下文管理的重要性,是在某个连续用了几个小时的对话窗口里——回复越来越慢,答非所问越来越频繁,甚至开始重复之前已经确认过的信息。这不是模型变笨了,… · 2026/9/25 7:35:03
别再把11801-1当网线标准:链路分级与验收全攻略 简介:这是一份ISO/IEC 11801-1:2017标准原版PDF文档,即《信息技术 客户场所通用布线 第1部分:总体要求》,属于网线及综合布线设计与验收领域的核心国际规范。标准发布于2017年11月,适用于局域网、城域网、广… · 2026/9/25 7:34:57
Atlas 300V部署YOLO实战:从工具链到性能优化全解析 做AI部署这行的人,最近应该没少被“Atlas”这个词刷屏。特别是手头在跑YOLO系列模型的朋友,时不时就会刷到“Atlas部署YOLO”“Atlas 300V 24G”之类的讨论。很多人第一反应是:这玩意儿到底是不是一张GPU?跟N卡有什么区别… · 2026/9/25 7:34:57
手部数据集难找?主流开源数据集与关键点估计实用指南 我入行做计算机视觉的头两年,被手部数据折磨得不轻。做人体姿态时还能找到一堆现成的COCO和MPII,可一转到手势识别、手部关键点估计,GitHub搜索结果立马就稀薄下来。当时我还跟同事吐槽:人脸数据多得用不完,手部数据怎… · 2026/9/25 7:34:57
AD19中Net Antennae规则详解:从DRC报告到PCB悬空铜修复实践 /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/25 7:34:51
创维E900V22D刷机全攻略:S905L3SB芯片兼容性解析与救砖实战 /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/25 1:00:31
MQTT协议原理与Broker服务器搭建实战:从Mosquitto到EMQX /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/25 1:00:37