久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 6843|回復: 4
收起左側

和嵌入式關聯的谷歌blockly圖形化編程的資料

[復制鏈接]
ID:291194 發表于 2018-3-13 12:02 | 顯示全部樓層 |閱讀模式
工作需要編寫了一份谷歌的blockly圖形化編程的資料,內附一份筆記,需要的可以參考一下,有疑問可以問我!
0.png

全部資料51hei下載地址(含清晰圖片與資料):
谷歌blockly圖形化編程資料內附一份文檔.rar (1.06 MB, 下載次數: 49)


工作驗收中提到的問題:
(1)如何編寫blocky自定義塊(對應自定義塊在blocky里面js的位置以及用法)。
(2)blocky自定義快如何跟pythonAPI里面的函數聯系起來。(3)如何編寫pythonAPI。(4)blocky塊生成的python文件是怎么樣一種機制(Browser.java這個類有什么作用)。(5)點擊執行按鈕的時候,后臺做了什么操作(6)項目中Java是如何去調用python的,需要注意什么?(7)項目中pythonDemo.py有什么作用?個人總結對以上問題的回答:
前言
:以下內容是我針對與上面驗收問題的總結和回答,因某些地方文字描述可能不好表達出本意,所以會以截圖加上文字說明進行概括,希望大家能將我所描述的以及圖中標記的內容或者文字仔細查看,避免漏掉一些細節以免造成困擾!
另外,因為對代碼部分,個人理解有所不同,如果有說的不對的地方,或者理解錯誤的地方,請指出并說明,萬分感謝!

(1)如何編寫blocky自定義塊(對應自定義塊在blocky里面js的位置以及用法)。

編寫自定義塊,通常編寫一個自定義塊,首先是看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塊就編寫完成了!

(2)blocky自定義快如何跟pythonAPI里面的函數聯系起來。

這個Blockly塊跟pythonAPI里面函數的聯系就是在定義塊的時候

這個圖右下角對應的就是myblocklyPython.js文件這個文件中的紅框里面就是對應pythonAPI里面的方法了

對應的通過Blockly頁面中的js方法會拼接成這樣的一個語句,也就是調用PythonAPI里面方法的語句,并且里面有參數,你可以用這個語句和pythonAPI中的方法進行對比!

(3)如何編寫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中封裝的截圖

(4)blocky塊生成的python文件是怎么樣一種機制(Browser.java這個類有什么作用)。

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文件以及做一些關于用戶操作界面的彈窗和響應

(5)點擊執行按鈕的時候,后臺做了什么操作

點擊執行按鈕時候,后臺先會判斷你是否連接機械臂,如果沒有連接,會提示請先連接機械臂,如果已經連接則會判斷你當前是否選擇了要運行的demo,有了demo就可以加載到demo對應的python腳本文件,并逐條運行腳本中的python語句,在語句的前面因為每條都添加了一個判斷dll是否正確的判斷,如果BrobotCheck()中的腳本有問題的話則也會終止機械臂的操作,如果語句沒有錯誤,則機械臂會按照腳本上的坐標或者其他指令進行運動,直至完成最后一條指令,或者有人點擊了終止按鈕!

(6)項目中Java是如何去調用python的,需要注意什么?

Java中調用python,主要是通過在JavaCallPython.java類中調用cmd然后通過cmd執行python代碼,所以如果想要執行python代碼必須要安裝python環境


這其中需要注意的是首先需要配置好python的環境,其次就是Process pr = Runtime.getRuntime().exec("python " + url3); 這個當中括號里面的python后面必須要加上一個空格, 其三就是url的路徑是要保證正確的,如果路徑錯誤,或者找不到python文件的話那么肯定運行會出現問題的

(7)項目中pythonDemo.py有什么作用?

我們項目中生成的文件為python.py文件,而pythonDemo.py文件是修改串口之后的pythonDemo文件,這個文件是我們Java調用cmd進行加載的python腳本文件.


評分

參與人數 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎勵!

查看全部評分

回復

使用道具 舉報

ID:466111 發表于 2019-1-10 20:31 | 顯示全部樓層
很好的例子
回復

使用道具 舉報

ID:572223 發表于 2019-6-25 23:39 | 顯示全部樓層
真厲害,最近也在開始研究這個,請問如何更換塊的ui外表的樣子?謝謝,還有附件能否發送一下給我?謝謝積分不夠無法下載學習3101331275@qq.com
回復

使用道具 舉報

ID:689368 發表于 2020-2-11 20:48 | 顯示全部樓層
最近想研究一下,謝謝分享
回復

使用道具 舉報

ID:720913 發表于 2020-4-2 14:00 | 顯示全部樓層
謝謝分享!
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 久久精品国产99国产精品 | 日韩国产在线 | 国产人成精品一区二区三 | 成人精品鲁一区一区二区 | 999久久久久久久久6666 | 免费看黄色小视频 | 欧美日韩中文在线 | 99re视频在线免费观看 | 天天干天天操天天射 | 久久99精品久久久久 | 亚洲免费网 | 久久99精品久久 | 国产午夜精品久久久久 | 亚洲成人网在线 | 中文字幕av网站 | 国产精品视频在线观看 | 精品一区二区三区在线观看 | 色爱综合| 精品国产久 | 综合自拍| 欧日韩在线 | 欧美a在线看 | 欧美成人免费在线视频 | 精久久久 | 国产精品永久 | 日韩av在线不卡 | 综合伊人 | 欧美日韩国产精品一区二区 | 成人午夜免费在线视频 | 自拍偷拍av| av中文字幕在线观看 | 国产乱码精品1区2区3区 | 国户精品久久久久久久久久久不卡 | 国产激情一区二区三区 | 久久综合久久久 | 日日操视频 | 欧美aaa一级片 | 四虎影院在线免费观看 | www.99热 | 91视频国产精品 | 精品日韩一区 |