飆機器人 _ 普特企業有限公司 PlayRobot Inc. 專案報告 專案名稱 :ArduBlock 新增選單功能功能描述 : 1. 新增感測器的 Block 如附件 1 2. 提供新增 Block 的 SOP ( 標準製作程序 ) 所需材料 : 1. Play

Similar documents
(Microsoft Word - wes _\246p\246\363\250\317\245\316LED\277O\305\343\245\334\252\254\272A.doc)

X6-04_How_do_I_write_a_com_port_communicate_program_of_XPAC_tc

目 錄 版 次 變 更 記 錄... 2 原 始 程 式 碼 類 型 之 使 用 手 冊... 3 一 安 裝 軟 體 套 件 事 前 準 備... 3 二 編 譯 流 程 說 明

主程式 : public class Main3Activity extends AppCompatActivity { ListView listview; // 先整理資料來源,listitem.xml 需要傳入三種資料 : 圖片 狗狗名字 狗狗生日 // 狗狗圖片 int[] pic =new

The golden pins of the PCI card can be oxidized after months or years

Eclipse C C++, or

AL-MX200 Series

epub83-1

Microsoft Word - 發布版---規範_全文_.doc

概 述 随 着 中 国 高 等 教 育 数 量 扩 张 目 标 的 逐 步 实 现, 提 高 教 育 质 量 的 重 要 性 日 益 凸 显 发 布 高 校 毕 业 生 就 业 质 量 年 度 报 告, 是 高 等 学 校 建 立 健 全 就 业 状 况 反 馈 机 制 引 导 高 校 优 化 招

鱼类丰产养殖技术(二).doc

疾病诊治实务(一)

名人养生.doc

<4D F736F F D2040B9C5B871A661B0CFABC8AE61C2A7AB55ACE3A8735FA7F5ABD8BFB3B9C5B871A661B0CFABC8AE61C2A7AB55ACE3A8732E646F63>


中老年保健必读(十).doc

27 i

% % ,542 12,336 14,53 16,165 18,934 22,698 25, ,557 7,48 8,877 11, 13,732 17,283 22,

海淀区、房山区(四)

穨ecr1_c.PDF

穨2005_-c.PDF

北京理工大学.doc

尲㐵.⸮⸮⸮⸮⸮

东城区(下)

果树高产栽培技术(一).doc

物质结构_二_.doc

第一節 研究動機與目的

i

水力发电(九)

中国古代文学家(八).doc

景观植物(一)

Microsoft Word - 目录.doc

园林植物卷(三).doc

19q indd

厨房小知识_一_

中南财经大学(七).doc


赵飞燕外传、四美艳史演义

厨房小知识(五)

最新监察执法全书(十八).doc

园林植物卷(十二).doc

华东师范大学.doc

國立中山大學學位論文典藏

乳业竞争_一_

最新执法工作手册(十).doc

untitled

最新执法工作手册(十六)

中国政法大学(六).doc

胎儿健康成长.doc

bnbqw.PDF

untitled

nb.PDF

第三章

1. 本文首段的主要作用是 A. 指出 異蛇 的藥用功效 說明 永之人爭奔走焉 的原因 B. 突出 異蛇 的毒性 為下文 幾死者數矣 作鋪墊 C. 交代以蛇賦稅的背景 引起下文蔣氏有關捕蛇的敘述 2. 本文首段從三方面突出蛇的 異 下列哪一項不屬其中之一 A. 顏色之異 B. 動作之異 C. 毒性之

Microsoft Word - 08 单元一儿童文学理论

Microsoft Word - edu-re~1.doc

南華大學數位論文

Microsoft Word 一年級散文教案.doc

米食天地教案

第32回独立行政法人評価委員会日本貿易保険部会 資料1-1 平成22年度財務諸表等

項 訴 求 在 考 慮 到 整 體 的 財 政 承 擔 以 及 資 源 分 配 的 公 平 性 下, 政 府 採 取 了 較 簡 單 直 接 的 一 次 性 減 稅 和 增 加 免 稅 額 方 式, 以 回 應 中 產 家 庭 的 不 同 訴 求 ( 三 ) 取 消 外 傭 徵 費 6. 行 政 長

(f) (g) (h) (ii) (iii) (a) (b) (c) (d) 208

WebSphere Studio Application Developer IBM Portal Toolkit... 2/21 1. WebSphere Portal Portal WebSphere Application Server stopserver.bat -configfile..

AL-M200 Series

Sophos Central 快速安裝手冊

(Microsoft Word - wes _\246p\246\363\250\317\245\316watchdog\250\276\244\356\265{\246\241\267\355\276\367.doc)

投影片 1

任務二 : 產生 20 個有炸彈的磚塊, 放在隨機的位置編輯 Block 類別的程式碼 import greenfoot.; // (World, Actor, GreenfootImage, Greenfoot and MouseInfo) Write a description of class

Cadence SPB 15.2 VOICE Cadence SPB 15.2 PC Cadence 3 (1) CD1 1of 2 (2) CD2 2of 2 (3) CD3 Concept HDL 1of 1

目次 

Spyder Anaconda Spyder Python Spyder Python Spyder Spyder Spyder 開始 \ 所有程式 \ Anaconda3 (64-bit) \ Spyder Spyder IPython Python IPython Sp

Microsoft PowerPoint - C_Structure.ppt

马太亨利完整圣经注释—雅歌

二零零六年一月二十三日會議

(1) (2) (3) 1. (1) 2

(Microsoft Word \256\325\260\310\267|\304\263\254\366\277\375.doc)

(i) (ii) (iii) (iv) 380,000 [ ] , , % % % 5.5% 6.5%

厨房小知识(四)

妇女更年期保健.doc

小儿传染病防治(上)

<4D F736F F D B875B9B5A448ADFBBADEB27AA740B77EA4E2A5555FA95EAED6A641ADD75F2E646F63>

女性青春期保健(下).doc

避孕知识(下).doc

孕妇饮食调养(下).doc

禽畜饲料配制技术(一).doc

中老年保健必读(十一).doc

i

怎样使孩子更加聪明健康(七).doc

i

女性美容保健(四).doc

學 習 內 容 元 素 一 直 透 過 中 小 學 校 課 程 相 關 課 題 培 養, 如 : 小 學 常 識 科 人 文 學 科 和 科 學 科 等 這 些 從 沒 有 因 為 德 育 及 國 民 教 育 科 課 程 指 引 在 2012 年 擱 置 而 有 任 何 改 變 4. 教 育 局 持

untitled

新婚夫妇必读(九).doc

FEELING COMFORTABLE ABOUT SEX

~ ~2055 : I

輕鬆學 Dreamweaver CS5 網頁設計..\Example\Ch0\ \.html..\example\ch0\ \mouse.txt..\example\ch0\ \ _Ok.html 學習重點 JavaScript 複製程式碼 mouse.txt Ctrl+C Ctrl+C 0-4


婴幼儿护理(四).doc

說 明 會 內 容 全 民 健 保 暨 施 行 細 則 修 正 之 承 保 重 點 與 案 例 說 明 二 代 健 保 實 施 後 就 醫 權 益 更 有 保 障 補 充 保 險 費 知 識 自 我 檢 測 及 討 論 附 錄 全 民 健 康 保 險 保 險 費 負 擔 金 額 表 ( 四 )- 職

Transcription:

專案報告 專案名稱 :ArduBlock 新增選單功能功能描述 : 1. 新增感測器的 Block 如附件 1 2. 提供新增 Block 的 SOP ( 標準製作程序 ) 所需材料 : 1. PlayDuino/Arduino 控制板 2. 各項感測器如附件 1 所需工具 : 1. Eclipse 設計規劃 : 1. 如附件 1 檔案列表 1. Java_pro.7z 2. repository.7z 3. ardublock-all.jar 1

一 開發環境 Ardublocka 是使用 Maven 管理的開發專案, 所以期開發工具如下 : 安裝步驟 1 Java SDK 2 Maven 3 eclipse 4 eclipse Maven plugin 1 下載安裝 Java SDK 依照上方連結下載, 安裝如一般安裝流程, 在此不詳述 2 下載安裝 Maven 依照上方連結下載 Maven 如圖.1, 下載完成後將其解壓縮到任 意目錄如圖.2, 環境變數設定, 增加 M2_HOME, 內容即為解壓縮 路徑 在 Path 裡增加 %M2_HOME%\bin 完後切換 cmd 畫面輸 入 mvn -version, 若成功即顯示 maven 版本 在 maven 解壓目錄下 conf/setting.xml 設置資源庫位置為 ( 找 localrepository 標籤 ) C:\Users\Administrator\.m2\repository (windows7) C:\Documents and Settings\Administrator\.m2\repository (windows XP),Administrator 視自己使用者名稱設定 圖.1 2

圖.2 3 下載安裝 eclipse 依照上方連結下載 eclipse, 下在完成後將其解壓縮到任意目錄 4 安裝 eclipse Maven plugin 在 eclipse 的壓縮目錄執行 eclipse.exe 開啟 eclipse 開發工具, 依據喜好設定專案目錄 點選 eclipse 工具列 => Help => Install New Software => 選擇 eclipse 內建好的版本 => General Purpose Tools => 選擇 m2e 開頭的項目全部安裝 => restart 3

4

5

5 設定 eclipse 點選 eclipse 工具列 => preferences => General => Workspace => Text file encoding 設為 UTF-8 點選 eclipse 工具列 => preferences => General => Content Types => Text => Java Properties File : Default encoding 設為 UTF-8 點選 eclipse 工具列 => preferences => maven => 一般只勾 debug output, 其他視情況需求勾選 點選 eclipse 工具列 => preferences => maven => installations => add => 選擇 maven 解壓縮位置 => 下方 Global settings from installation directory 會變成解壓縮位置之 settings.xml 點選 eclipse 工具列 => preferences => maven => User Settings => User Settings => 選擇解壓縮位置之 settings.xml, 下方之 Local Respository 不予更動 6 重製專案將 Java_pro2.7z 解壓縮到任意目錄會得到 openblocks ardublock 專案點選 eclipse 工具列 =>import=>general=>existing Project Into Workspace=>Next=> 選擇 openblocks 專案 =>Copy Project Into Workspace =>Finish 6

點選 eclipse 工具列 =>import=>general=>existing Project Into Workspace=>Next=> 選擇 ardublock 專案 =>Copy Project Into Workspace =>Finish 錯誤處理 如果出現 is missing required library 錯誤, 請將 repository.7z 解壓縮 到 C:\Users\Administrator\.m2\repository (windows7) 或 C:\Documents and Settings\Administrator\.m2\repository (windows XP) 中取代之, Administrator 視自己使用者名稱設定 7

8

二 加入元件 block 的標準作業流程依據作者的說明文件想要在 ardublock 中加入自己的 block 至少必須更動三個檔案分別為 : 1 ardublock.properties 位於 src/main/resources/com/ardublock/block 用於設定 block 的文字標籤 ( 如需設定繁體中文於 ardublock_zh_tw.properties 中設定 ) 2 ardublock.xml 位於 src/main/resources/com/ardublock/block 用於設定 block 的顯示介面群組 3 TranslatorBlockFactory.java 位於 src\main\java\com\ardublock\translat- -or\block 用於設定 block 的轉換類別 所以綜合以上所述加入 block 的標準作業流程如下 : 1 決定 block 的型態, 建議可先用 arduino 開發工具撰寫對應元件 bloc k 的程式再決定 block 對應的輸出輸入 2 依照所決定的 block 型態加入元件描述到 ardublock.xml 3 撰寫欲加入元件 block 的轉換類別 4 將欲加入元件 block 轉換類別設定加入 TranslatorBlockFactory.java 位於 com.ardublock.translator.block 9

三 範例 1. 超音波感測器 i. 這個範例使用 PING))) 的超音波感測器使用者給予 pulse 至超音波感 測器, 超音波感測器會回傳一個型態 long 的回傳值, 所以設計上使 用 command block 將超音波感測器的回傳值直接放入一個變數中 所 以這個 Block 會有兩個需要連接的 Block, 一個是指定接角一個是指 定存放的變數 如上圖, 接角必須是一個數值, 指定存放的變數為 int ii. 設定 block 的文字標籤於 ardublock.propertie iii. 加入元件描述到 ardublock.xml 在 ardublock.xml 中搜尋 </BlockGenuses> 標籤在這個標籤之前加入以下標籤, 這個 Block 主要的目的是讀取超音波感測器所感測的距離值並將其指定給一個變數, 所以這個 Block 對定義為一個 command kind 的 Block 較為合適 這個 Block 需要倆的 Blockconnector 參數一個是接到超音波的接角, 另一個是所要存放的變數名稱 10

上一段完成了 Block 的描述但在還未將新增的 Block 加入 BlockBrawers 所以 ardublock 是不會顯示出這個 Block 要顯示需在 ardublock.xml 中搜尋 </BlockDrawerSet> 在這個標籤之前加入以下標識語言 標籤說明 : arbublock 產生 Block 的方式為讀取 ardublock.xml 中的標識語言, 標識語言必須有頭有尾這點必須注意 <BlockGenuses></BlockGenuses> 描述 Block 的集合 <BlockGenus></BlockGenus> 描述個別 Block 的屬性 <BlockGenus> 必須有幾個參數必須設定 :name 描述這個 Block 的名子,kind 描述這個 Block 的類別,color 描述這個 Block 的顏色,initlabel 描述這個 Block 的顯示標籤 <BlockConnectors></BlockConnectors> 描述 Block 連結狀態的集合 <BlockConnector></BlockConnector> 描述 Block 連結狀態, 一個 Block 不一定需要連接其他 Block, 但一旦需要連接其它 Block 時必須在 <BlockConnectors></BlockConnectors> 內描述 BlockConnector 屬性, BlockConnector 有幾個重要的參數必須設定 :label 為顯示描述這個 11

連接處的標籤,connector-kind 描述這個連接的型態,connector-type 描述這個連接的資料型態 <Images></Images> 描述 Block 欲顯示的圖示 <Image></Image> 描述 Block 欲顯示的圖示,block-location 為圖片位 置 <FileLocation></FileLocation> 描述 Block 欲顯示的圖示的位置, 與顯 示的圖片必須放在 \src\main\resources\com\ardublock\block\playrobot 中 <BlockDrawerSets></BlockDrawerSets> 描述欲顯示 Block 的集合 <BlockDrawerSet></BlockDrawerSet> 描述欲顯示 Block 的集合 <BlockDrawer></BlockDrawer> 描述欲顯示 Block 的集合群組 <BlockGenusMember></BlockGenusMember> 描述集合群組內的成員 12

iv. 加入元件 block 的轉換類別 在 src/main/java 加入一個 Package 命名為 com.ardublock. translator.block.playrobot, 這個 Package 將用來存放所有的傳換類別 在 Package com.ardublock translator.block.playrobot 加入一個 class 命名為 PlayRobotPINGBlock 並開啟 每一個轉換類別都繼承於 TranslatorBlock 類別, 這個類別有一個建構子和一個必要 void 必須宣告, 依照下列程式完成 超音波的 Block 被設計成只要呼叫 ardublockuiplayrobotsensorping(int pingpin) 函數並給予接角的數字, ardublockuiplayrobotsensorping(int pingpin) 會回傳 int type 距離值, 13

所以超音波 Block 所要做的工作有取得接角, 宣告一個 int 變數, 呼 叫 ardublockuiplayrobotsensorping(int pingpin) 程式一開始宣告兩個字串變數 SensorPIN 存放接角值 ret 存放回 傳值 宣告第一個接到超音波 Block 的其他 Block 判別它是否是 NumberBlock, 如果不是給予使用者警告, 如果是使用 tocode() 取的 回傳字串存放到 SensorPIN 宣告第二個接到超音波 Block 的其他 Block 判別它是否是 VariableNumberBlock, 如果不是給予使用者警告, 如果是使用 tocode() 宣告這個變數並將函數名稱加入 ret, 使用 translator.adddefinitioncommand(string S) 命令產生 ardublockuiplayrobotsensorping(int pingpin) 函數, 設定回傳字串 ret 為呼叫 ardublockuiplayrobotsensorping(int pingpin) 函數並將回傳 值存入以宣告變數, 最後將這個字串回傳到上層 Block 程式說明 : PlayRobotPING(Long blockid, Translator translator, String codeprefix, String codesuffix, String label) 為這個 class 的建構子 tocode() 是這個 class 的函數, 此為必要函數所有轉換工作都在此函數中完成 此函數結束時必須回傳一個值可以是 Null 或一個字串此例為回傳一個字串 要取得 Block 的程式必須宣告這個 Block, 每個 Block 都有自己的轉換類別所以宣告時須使用 (TranslatorBlock 變數名稱 ), 在使用 this.getrequiredtranslatorblockatsocket(int c) 取得已連接的 Block this.getrequiredtranslatorblockatsocket(0) 命令指的是取的連接這個 Block 的其他 Block, 括號中必須為數值, 數值代表每一個連接的 Block 的編號由上到下從零開始 14

mtranslatorblock.tocode() 為將已連接的 Block 轉換為程式碼, 此函 數會回傳一個字串所以必須宣告一個 String 來存放 translator.adddefinitioncommand(string S) 命令可以將字串 S 以函數的 方式貼到 Arduino 開發程式中 ret 為這個 Block 所要回傳的程式字串 完成後將建構子宣告加入 TranslatorBlockFactory.java, BlockName 為在 ardublock.xml 中加入 <BlockGenus> 時所給予的名子 v. 編譯傳案在專案 ardublock 上按滑鼠右鍵 =>Run as=>maven install 既可編譯在專案目錄中會有一個 target 的資料夾, 資料夾中會生成一個 ardublock-all.jar 的檔案, 將它複製到 arduino 的 sketchbook location 既可 15