只需一步,快速开始
热门: 51单片机 | 24小时必答区 | 单片机教程 | 单片机DIY制作 | STM32 | Cortex M3 | 模数电子 | 电子DIY制作 | 音响/功放 | 拆机乐园 | Arduino | 嵌入式OS | 程序设计
编写自定义块,通常编写一个自定义块,首先是看BrobotAPI里面的分类里面是否需要定制一个自定义块,根据给出的分类里面块的描述,找到对应的嵌入式端的接口,根据接口了解这个里面需要传入哪些参数,以及这个块的作用,这样就决定了这个块长什么样,需要传几个参数,以及是手动输入值还是可以选择值,或者两者并存! 当有了接口之后,我需要在E:\eclipse\workplace\BRobotAPP\pythonFile\blocklyAPI.py中将接口通过python语言进行封装, 例如下图是对门型运动的接口的封装
这个就是根据接口封装的pythonAPI.py文件,当中的每个语句我都有加以说明, 当然其他的方法也都跟这类似,只是有的方法因为考虑到安全因素,需要在方法前面加上一系列的判断,确保判断条件通过后才能执行方法
有了pythonAPI.py封装了方法,那么就可以编写Blockly自定义块了,编写自定义块是个比教麻烦的步骤,因为Blockly是谷歌的一个插件,所以编辑Blockly块就要用到谷歌封装的工具了,这个工具是用谷歌浏览器打开E:\eclipse\workplace\BRobotAPP\blockly\googleDemo\blockly-master\demos\blockfactory\index.html这个页面,通过这个页面就可以编写Blockly块了!
上图就是编辑一个自定义块的页面了,而块就是这样定义出来的,至于你希望块长成什么样,就完全靠图中左侧的代码进行调整, BrobotAPI中的每一个块就是这样定义出来的! 而Blockly所对应的js就是 E:\eclipse\workplace\BRobotAPP\blockly\googleDemo\blockly-master\tests\generators目录下面的myBlockly.js 和myBlocklyPython.js文件了, myBlockly.js中的文件是不需要改动的,直接复制上图中的右边中间的那地方的代码就行了, 就是这个图片里的内容
而myblocklyPython.js中的代码就要改动了,如图
在所有的步骤完成后,还需要在index.html中添加上对应的<Blockly>标签
这样 一个完整的Blockly块就编写完成了!
这个Blockly块跟pythonAPI里面函数的联系就是在定义块的时候
这个图右下角对应的就是myblocklyPython.js文件这个文件中的红框里面就是对应pythonAPI里面的方法了
对应的通过Blockly页面中的js方法会拼接成这样的一个语句,也就是调用PythonAPI里面方法的语句,并且里面有参数,你可以用这个语句和pythonAPI中的方法进行对比!
编写PythonAPI,是需要对照着为知笔记中的Brobot函数接口.md来进行编写,举个例子就拿 向嵌入式端发送激光雕刻的图片的路径数据 这个接口来说吧 它的接口是
int SendEngravePathData(unsigned char laserlevel, unsigned char pathtype, float goalcoor[3])
首先 int 是这个方法的返回值,
SendEngravePathData 这个是方法名
括号里面的是参数 laserlevel 是表示激光功率的等级,它是char型,所以在pythonAPI中需要将它转为char型
Pathtype 参数表示的是路径的类型,也是char型,所以也需要将它转为char型
goalcoor[3] 参数分别对应的就是传进去的坐标点X,Y,Z 因为它是一个数组,所以我们写pythonAPI时候需要将它转成python语言的数组格式 下面就是pythonAPI中封装的截图
event.js就是相关事件,这里面有很多事件,这个也是动态产生python代码和xml代码的文件,其中alert()事件中时python代码,confirm中时xml代码confirm()事件,
Field_textinput.js中,键盘按下事件中,动态生成python代码和xml代码。
这个是谷歌里面封装的生成python文件的机制! 在工作页面中我们选择blockly块生成python代码,这里我们用到的是Browser.Java这个类里面定义的方法.
在这个类里面我们首先是需要通过绝对路径获得用户目录里面路径
有了路径之后我们需要拼接路径加载index.html地址
下面是通过拼接生成python的头文件
头文件拼接完成后动态获取python的代码,并创建python文件
这样python文件就生成了.
Browser.java这个类有什么作用
这个类的作用. 主要作用就是上面介绍的通过io的读取路径,定义方法创建出python文件,然后定义里面的一些js响应事件,生成项目的xml文件以及做一些关于用户操作界面的弹窗和响应
点击执行按钮时候,后台先会判断你是否连接机械臂,如果没有连接,会提示请先连接机械臂,如果已经连接则会判断你当前是否选择了要运行的demo,有了demo就可以加载到demo对应的python脚本文件,并逐条运行脚本中的python语句,在语句的前面因为每条都添加了一个判断dll是否正确的判断,如果BrobotCheck()中的脚本有问题的话则也会终止机械臂的操作,如果语句没有错误,则机械臂会按照脚本上的坐标或者其他指令进行运动,直至完成最后一条指令,或者有人点击了终止按钮!
Java中调用python,主要是通过在JavaCallPython.java类中调用cmd然后通过cmd执行python代码,所以如果想要执行python代码必须要安装python环境
这其中需要注意的是首先需要配置好python的环境,其次就是Process pr = Runtime.getRuntime().exec("python " + url3); 这个当中括号里面的python后面必须要加上一个空格, 其三就是url的路径是要保证正确的,如果路径错误,或者找不到python文件的话那么肯定运行会出现问题的
我们项目中生成的文件为python.py文件,而pythonDemo.py文件是修改串口之后的pythonDemo文件,这个文件是我们Java调用cmd进行加载的python脚本文件.
查看全部评分
使用道具 举报
本版积分规则 发表回复 回帖后跳转到最后一页
手机版|小黑屋|51黑电子论坛 | 管理员QQ:125739409;技术交流QQ群281945664
Powered by 单片机教程网