2013年12月1日 星期日

使用 JAVA 來控制你的 Lego NXT

在安裝好 leJOS 開發環境後,當然可以只用一般的文書編輯器來撰寫JAVA程式(如: Notepad、Notepad++…),但通常我們會需要用一個"整合性開發工具"(IDE) 來進行程式的撰寫與管理,今天要介紹的這個工具是頂頂大名的 "eclipse" ,也許你會覺得會不會有點小題大作了呢! 哦~當然不! 工欲善其事必先利其器,有好的工具不但可輕鬆你的工作更可加速你的效率呢!

本篇記載的內容有:
- 建立新專案
- 新增程式
- 程式撰寫
- 編譯及下載
- 在NXT上執行

建立新專案: 在 clipse IDE 中是以 "專案" 型式去進行程式的管理,所以在你開始撰寫新程式前必須先建立一個"專案的容器"來在"存放"程式,由"File"選單中點選"New"=>"LeJOS NXT Project”這個類別的專案
nxt-clipse-1

"專案" 的一些"屬性"設定:
-Project_name:專案名稱,可填入一個有意義的名稱,如NXTMoveProject,表示這是一個用來操作Nxt移動的專案。
-dufault_location:此專案存放的目錄,預設目錄是 eclipse 的 workspace,當然你也可以選擇自定的路徑,變更路徑前先把"use default location"選項點掉才可自動專案存放位置。
設定完成後按下"Finish"按鈕。
nxt-clipse-2

eclipse 自動建置專案相關的目錄及檔案(java runtime library 及 nxt runtime library),其中 src 目錄就是用來存放程式碼的路徑。
nxt-clipse-3


新增程式: 新增好專案後,接下來就是建立程式,由"File”=>"New"=>"Class"
nxt-clipse-4
依序輸入 class 相關的設定:
-Package : 其實就是"命名空間"(namespace),用途是建一個"唯一"的(不重覆)程式,若你的程式要分享給別人使用,最好的方式是有一個具代表意義的Package name,當你使用了特別的 Package,你的程式名稱就會變成是 "Packeage + Class Name",這樣即使 Calss Name 與其他人相同,也沒有關係,加上Package後,程式會重覆的機率就微乎其微了。
-Name : 指的就是程式的名稱。
-public static void main(String[] args) : 這個選項真的是 eclipse 會在按下 "Finish" 按鈕後,除了自動建立 LcdTest.java 這個程程式檔案外,也會在程式中自動建立出 main 這個程式執行起點的 function。
nxt-clipse-6
上述 Package 若使用的名稱是 com.mydomain ,在程式建立的路徑上是會建立不同層級的子目錄,如下圖:
nxt-clipse-6

在new java class 視窗中按下"Finish"後,eclipse 會自動幫你建立出程式檔案及骨架,如下圖:,你所要撰寫的程式就是在 main 這個 function 中。
nxt-clipse-7
下圖所顯示的是 eclipse 貼心幫我們自動產生的 "工作管理" (Tasks)清單。在上圖中我們提到 main 這個function骨架是eclipse 自動建立的(若你在 Class新增過程中有勾選 "public static void main(String[] args)"這個選項),你有注意到在這個Function中大一行 "註解",註解中是以 "TODO" 開頭。當程中有任何以 "TODO"字眼開頭的註解時,eclipse 會自動的將這個項目記錄在 Task view 這個視窗中,提醒你有這麼一件待完成的事。如下圖你可以在程式任何地方輸入類以的註解(如下圖)。
nxt-clipse-8

程式撰寫 : 在寫程式碼前我們會習慣先引用程式碼會使用到的 API 的命名空間,使用方法是在 package 與 public class 之間加入 import 語法(如下圖),下圖的範例是因為我們會用到 lejox.nxt 這組API,所以會先在程式開頭處先引用它的 namespace,當你輸入完 "import le" 後,你可以使用 clipse 很貼心的功能,按下 Alt+/ 這組快速鍵,eclipse 會幫你列出你可能要引用的命名空間,讓你挑選,免除你輸入的困擾。(直接以滑鼠Double click即可)
nxt-clipse-9
namespace 輸入完成後的畫面
nxt-clipse-10

你可能會問先引用 namespace 有何作用呢? 哈! 簡單的說是為了少打幾個程式碼啦,如下圖第9行及第10行程式碼是相同的語法,第10行的寫法是當你未先引用lejos.nxt 命名空間時的用法,必須每次都得多鍵入 "lejox.nxt."。
nxt-clipse-12

回到我們要撰寫的第一支程式來,我們撰寫的程式碼相當簡單(如下圖),讓A Port 的馬達向前轉,運轉維持5秒鐘。
nxt-clipse-13

編譯及下載 : "Run" => "Run As" => "2 LeJOS NXT Program"
nxt-clipse-14

可以在 "Console View" 中查看詳細的訊息,下圖中表示程式編譯及聯結成功,程式也順利載入到您的NXT上。
nxt-clipse-15

在NXT上執行 : 在 NXT 上選擇 "Files" 選單 => LcdTest.nxj 再按 "執行" 鍵開始執行你撰寫的程式。

沒有留言:

張貼留言