找回密码
 马上注册

QQ登录

只需一步,快速开始

查看: 15874|回复: 7

LeJOS NXJ入门指南 - 使用Eclipse

[复制链接]
发表于 2009-10-27 22:32:12 | 显示全部楼层 |阅读模式

版权声明:转载时请以超链接形式标明文章原始出处和作者信息及本声明
http://programus.blogbus.com/logs/49288956.html


本文含有大量代码格式以及高亮,论坛无法支持,为获得更好的视觉效果,推荐点击上面链接查看BLOG原文。(主要是我懒得在此再调一次……)


  
英文原文: http://lejos.sourceforge.net/nxt/nxj/tutorial/Preliminaries/UsingEclipse.htm

  安装Eclipse  
你可以从Eclipse Downloads下载到Eclipse。如果你只想用Eclipse进行LeJOS NXJ编程,你只需要标准Java开发能力(standard Javadevelopment capabilities)——换句话说,你不需要能够支持JavaEE开发或者类似C++等其他语言开发或者Eclipse插件开发的版本。例如“Eclipse IDE for JavaDevelopers”的安装包就足够了。另外,请保证你下载的版本符合你正在使用的操作系统。本节中将以MicrosoftWindows下的环境为例进行讲解,不过在其他操作系统中的过程应该也都大同小异。如果你用Linux,你所用的发行版或许已经安装好了Eclipse,你可以直接使用。  
解压缩你下载的文件。如果你将文件解压缩到C:\,那么你的Eclipse目录将是C:\eclipse。  
你可以从Eclipse目录中直接运行eclipse.exe。你也可以在桌面上放一个快捷方式。  
当你第一次启动Eclipse的时候,请指定一个工作区(workspace):  
  
你可以保留默认值;如果你使用多个工作区,你也可以为LeJOS编程专门创建一个工作区。   
在你点击[OK]按钮后,IDE将打开一个欢迎画面。你可以关掉欢迎画面直接投入到LeJOS程序开发中。  
本指南将告诉你如何运行示例程序和PC示例程序,然后带你看一下如何使用ant来构建文件。接下来会告诉你如何创建自己的工程,并使用ant文件。如果你对此不感兴趣,并打算使用Eclipse插件,跳到[安装Eclipse插件]一节。(译者:对于大多数对ant不甚了解的同学,我强烈推荐使用Eclipse插件,方便快捷。)  
  
  向Eclipse中导入LeJOS NXJ工程  
首先让我们把LeJOS工程导入到Eclipse工作区中。选择菜单中的[文件(File)]->[导入(Import)…]然后选择[常规(General)]->[导入既存工程(Existing Projects intoWorkspace)]。找到你安装LeJOS工程的目录(比如,C:\User\Me\leJOSNXJProjects或者C:\Documentsand Settings\Me\leJOSNXJSettings),选择里面的全部文件进行导入。  
注意:如果你通过这种方法导入LeJOS NXJ工程,代码将不会被移动到工作区,它们会仍旧保存在LeJOSNXJProjects目录中。  
  
  使用示例工程  
导入成功后,你会在PackageExplorer中看到很多包含了示例代码的工程。现在你可以通过点击文件夹前面的图标来打开或者关闭文件夹,双击文件来打开文件。让我们试着打开“BlueStats”文件夹(译者:如果你找不到这个文件夹,请确认你已经展开了samples工程),然后打开“(defaultpackage)”文件夹,再双击打开“BlueStates.java”文件。你会看到如下图的内容:  
  
例子工程中为每一个示例准备了一个源代码文件夹(source folder)。每一个文件夹里面都包含了一个供运行ant编译和构建示例文件的build.xml文件。Eclipse捆绑了在Java中使用的构建系统——ant。  
除了ant之外,你还可以通过LeJOS Eclipse插件等其他途径来编译、连接和上传你的LeJOS NXJ程序,不过ant很容易使用,所以我们先从ant开始讲起。(译者:据我的经验,ant不如插件方便,不过功能比插件强大。)  
ant通过“target”来管理文件的构建。示例build.xml中默认的target是“uploadandrun”(译者:懂一点英语的人都知道这是上传并运行的意思)。这意味着,如果你用ant来运行build.xml文件,他将自动编译、连接Java源文件,生成一个二进制文件,然后将其上传到NXT中并运行之。  
启动你的NXT,确认它已经通过USB连接在PC上或者开启了蓝牙连接功能。然后右键单击build.xml文件,选择“Run As”然后从中选择“Ant Build”。  
  
你会在控制台窗口中看到如下内容的输出:  
     Buildfile: C:\Users\Lawrie\leJOSProjects\samples\BlueStats\build.xml
clean:
compile:
    [javac] Compiling 1 source file to C:\Users\Lawrie\leJOSProjects\samples\BlueStats
link:
     [java] Class 0: java.lang.Object
     [java] Class 1: java.lang.Thread
     [java] Class 2: java.lang.String
     [java] Class 3: java.lang.Throwable
     [java] Class 4: java.lang.Error
     [java] Class 5: java.lang.OutOfMemoryError
     [java] Class 6: java.lang.NoSuchMethodError
     [java] Class 7: java.lang.StackOverflowError
     [java] Class 8: java.lang.NullPointerException
     [java] Class 9: java.lang.ClassCastException
...
     [java] Class 38: lejos.nxt.Flash
     [java] Method 0: Class: java.lang.Object Signature: ()V PC 3222 Signature id 2
     [java] Method 1: Class: java.lang.Object Signature: notifyAll()V Native id 5
     [java] Method 2: Class: java.lang.Object Signature: wait()V Native id 6
     [java] Method 3: Class: java.lang.Object Signature: wait(J)V Native id 7
     [java] Method 4: Class: java.lang.Object Signature: toString()Ljava/lang/String; PC 3223 Signature id 95
...
     [java] Method 147: Class: lejos.nxt.Flash Signature: writePage([BI)V Native id 75
     [java] Method 148: Class: lejos.nxt.Flash Signature: ()V PC 9337 Signature id 3
     [java] Master record    : 16 bytes.
     [java] Class records    : 39 (390 bytes).
     [java] Field records    : 80 (80 bytes).
     [java] Static fields    : 53 (106 bytes).
     [java] Static state     : 53 (202 bytes).
     [java] Constant records : 26 (104 bytes).
     [java] Constant values  : 26 (252 bytes).
     [java] Method records   : 149 (1788 bytes).
     [java] Exception records: 67 (536 bytes).
     [java] Code             : 117 (6122 bytes).
     [java] Total            : 9597 bytes.
uploadandrun:
     [java] Found nxt name NOISY address 001653007848
     [java] leJOS NXJ> Upload successful in 1974 milliseconds
BUILD SUCCESSFUL
Total time: 4 seconds  

LeJOS连接器产生的长长的输出列表可以告诉你所有被包含在你的程序中的类和方法。这些信息对调试程序将相当有用。
你可以逐个试一下示例程序。其中一些示例需要与PC端程序通信——请参看下面的[使用PC示例工程]一节。另外有一些程序需要在NXT上连接指定的传感器或者需要具有某种特性的机器人结构——比如轮子驱动的车型机器人。请参看每一个示例程序中的Java文件最开始的注释来获取相关的示例运行前提信息。
有一点需要提醒大家的是,示例工程中包含了很多带有主方法的程序。这对于在一个工程里面包含很多程序来说确实很方便,但这并不是一个好的方案。当构建自己的工程时,还是建议大家为不同的LeJOS NXJ程序建立不同的工程。

使用PC示例工程
如果你向工作区中导入了所有的LeJOS NXJ工程,你应该会找到一个叫做pcsamples的工程。现在打开它,查看其中的一个示例,比如BTSend。
BTSend与BTReceive示例程序协同工作。BTSend.java运行于PC端,而BTReceive.java运行于NXT端。
你会发现PC示例中没有build.xml文件,因为它们不需要。你可以通过右键点击BTSend.java并从菜单中选择[Run as Java application]来运行它,不过在运行它之前,我们必须先在NXT中运行起BTReceive。
进入samples工程,选择BTReceive的build.xml文件,并按照我们上一节提到的方法将程序编译、上传到NXT中,并运行。
现在回到pcsamples工程,运行BTSend.java。BTSend运行后,会连接BTReceive,并随后向其发送100个整数,同时将接收到的值显示出来。然后,断开连接,BTReceive会重新开始等待下一次连接。
你也可以用NXTReceive与BTSend协作。NXTReceive与BTReceive非常接近,但是它允许你选择协议和发送数据用的模式。
你可以用类似的方法逐个试一下其他PC示例程序。其中的一些是与NXT示例中的程序配对的。仍然是查看Java源文件开头的注释来了解相关信息。另外有一些程序在PC上远程运行了一个LeJOS NXJAPI的子集。AccelDemo、SensorTest以及TachoCount就属于此类程序。TachoCount中演示了在你拥有多于一个NXT的时候如何控制你所连接的NXT。

使用org.lejos.example工程
org.lejos.example工程是告诉你如何为LeJOS创建一个工程和如何使用ant构建文件的一个很好的示例。

在工程名称中包含你的组织名是一个好习惯,它可以让你避免同一工作区中工程之间的命名冲突。不过,如果你是唯一一个使用这个工程的人,这就没那么多必要了。
工程中有一个src目录,里面存储着所有的源代码包。示例工程只有一个包:org.lejos.example。遵从标准Java的包命名规约也是一个很好的习惯。(译注:标准Java的包命名规约要求所有的包名都应该是小写字母组成。)不过,如果你不打算将工程与他人共享,这也是没有必要的。
org.lejos.example包里面仅有一个类文件:HelloWorld。
工程可以使用ant调用build.xml文件进行编译。build.xml会用到一个属性文件build.properties,这个文件中包含了所有LeJOS的jar文件的名字和位置。
build.xml文件中包含了进行连接和上传的target。默认的target是uploadandrun,它能够自动编译、连接程序、生成二进制文件、上传到NXT中并运行之。
右键单击build.xml,从菜单中选择[Ant Build]。你会看到Eclipse控制台中会输出连接信息,紧接着二进制文件被上传到NXT中并运行起来。
如果你想运行不同的target,右键单击build.xml并选择[Ant Build…]。

建立你自己的工程
本节描述了如何建立一个使用ant构建文件的工程。如果你更希望使用Eclipse插件,请跳至后面的[安装Eclipse插件]一节。
要创建一个新的工程,从菜单中选择 File > New > Java Project。然后给工程起一个名字,比如“org.me.myproject”,然后点击[Finish]按钮接受所有的默认选项。
现在,你应该会在Package Explorer中看到你刚刚创建的“org.me.myproject”工程。
接下来,你需要将classes.jar文件添加到你的工程中。右键单击你刚刚创建的工程,选择[Properties]然后打开[JavaBuild Path]。选择[Libraries]选项卡并点击[Add externalJar]。在你的NXJ安装路径下找到你的classes.jar并选择之。由于我们需要用classes.jar替换掉标准Java库,所以我们需要删除它:选择“JRE System Library”,点击[Remove]按钮。你现在会看到在你工程的“ReferencedLibraries”下面出现了classes.jar。
在你的工程中,应该有一个包。让我们把它命名为“org.me.mypackage”。
选择“src”文件夹,右键单击它,并从弹出菜单中选择 New > Package 然后输入包名。
现在,我们要添加我们的主类。选择刚刚创建的包,右键单击它,然后选择 New >Class。输入类名——HelloWorld。勾选上“public static void main(String[]args)”复选框。你现在会看到如下的HelloWorld.java文件程序:
  package org.me.mypackage;

public class HelloWorld {

    /**

*
@param args
     */
    public static void main(String[] args) {
        // TODO Auto-generated method stub
    }
}

编辑源代码如下:
  package org.me.mypackage;

import lejos.nxt.*;

public class HelloWorld {

    public static void main(String[] args) {
        System.out.println("Hello World");
        Button.waitForPress();
    }
}

现在,你需要构建(build)你的工程。一种方法是与刚才我们介绍org.lejos.example工程时一样使用ant。首先选择org.lejos.example中的build.xml文件,右键单击之,选择[Copy]。然后回到我们工程的src文件夹,右键单击之并选择[Paste]。这样,我们便把build.xml复制过来了。用同样的方法复制build.properties。
双击build.xml打开它,然后修改project标签的name属性和description标签的内容。然后修改main.class这一property的值为你的主类:org.me.mypackage.HelloWorld。
修改后应该是如下这样:
  <property name="main.class" value="org.me.mypackage.HelloWorld"/>

现在,你可以将你的第一个LeJOS NXJ工程上传到NXT上运行了。使用上面我们介绍的方法,从菜单中选择[Ant Build]即可。
提醒一下:别忘了在此之前把NXT打开并连接上。
接下来你会看到连接器输出的一长串信息,然后程序被上传到NXT中并开始运行。你会在NXT液晶显示器(LCD)屏幕上看到“Hello World”字样。按任意键可以停止程序。
译者:成功了!兴奋吧!不过,大家可以看到使用ant进行编译、连接以及上传程序需要自己写build.properties文件和build.xml文件,虽然可以通过复制/粘贴然后改造的方式来制作这两个文件,但还是比较麻烦的事情。而安装了后面介绍的Eclipse插件之后,则可以免去这些麻烦,只需要两步简单的操作即可完成,所以推荐对Ant不甚熟悉的初学者使用插件。

安装Eclipse插件
设置一个工程的一个更加简单的方式,就是使用Eclipse插件。
插件可以自动将你的工程转换为LeJOS NXJ工程。
(重要译注:由于在Eclipse的不同版本里安装插件的方式稍有不同,所以以下步骤仅供参考,具体安装方法请参照你所使用的Eclipse版本帮助。安装插件时的最主要信息是URL,我会在下面的介绍中高亮出来。)
要安装LeJOS的Eclipse插件,选择菜单项 Help > Software Updates… 你会看到如下窗口:

点击[Add Site…]按钮,你会被提示输入网址,请输入:
  
http://lejos.sourceforge.net/tools/eclipse/plugin/nxj/


点击[OK],网址便被加入到列表中。选择刚刚加入的网址:

点击[Install…]按钮,Eclipse会自动检查依赖关系并提示你安装插件:

点击[Finish]完成安装。这时,你会被提示重新启动Eclipse:

选择[Yes]重新启动Eclipse。
  
译注:如果你使用的是Eclipse Galileo版本,在安装插件过程中,添加过URL之后可能在列表中看不到刚刚添加的内容。此时,请将[Group items by category]复选框取消选择。

当Eclipse重启完毕,你可以通过选择菜单 Help > Help Contents 打开帮助,然后从中选择[leJOS NXJ]来阅读相关帮助:

我们建议你最好阅读一下帮助,以让你对插件更加熟悉。(译者:估计看我翻译的中文版的人肯定不会愿意看英文版的帮助,不过还是推荐看看。)
下面我们需要对插件进行一点配置。选择菜单 Window > Preferences 然后在其中选择[leJOS NXJ]:

在[NXJ_HOME]中填入你安装LeJOS NXJ的目录。根据需要勾选下面的设置。强烈推荐勾选上[Verbose]复选框。
当你完成设置之后,点击[Apply]按钮,然后点击[OK]关闭对话框。
现在插件已经被设置好了。


使用Eclipse插件
你可以通过插件来刷新你的NXT固件。点击菜单 leJOS NXJ > Upload Firmware 或者在点击工具栏中对应的按钮即可完成。

要建立一个新的LeJOS NXJ工程,首先创建一个普通的Java工程:菜单 File > New > Java Project ,填入工程名称,创建工程。
然后,右键单击你创建的工程,菜单中选择 leJOS NXJ > Convert to leJOS NXJ Project :

这样,你的工程就会被标记为LeJOS NXJ工程,并将JRE System Library替换为你所安装的classes.jar。
现在,你可以加入你的包和类,并用编译普通Java工程的方法编译你的代码。(默认情况下,Eclipse会自动编译代码。)
当你打算上传代码时,右键单击你的主类(包含主方法的类),从弹出菜单中选择 leJOS NXJ > Upload Program to the NXT Brick :

你会在LeJOS NXJ控制台窗口中看到输出和一个进度条对话框。
根据你在插件设置窗口中选择的连接方式,程序将通过USB或者蓝牙上传到NXT中。你可以随时到设置窗口中改变连接方式。如果你在设置中选择了[Run program after upload]选项,程序将在上传完毕后自动运行。

设置LeJOS图形界面工具
LeJOS NXJ包含了一系列功能强大的图形界面工具,它们可以刷写固件、管理NXT上的文件、监视和调试程序、下载数据日志等等等等。在Eclipse中直接运行这些工具将更加方便你的编程工作,不过在享受便利之前,还需要一点点设置。
要创建一个外部工具,点击工具栏上[Run External Tool]图标旁边的小下箭头,并从中选择[Extenal Tools Configuration]:

然后从左侧选择[Program]并点击上方小工具栏中的[New Launch Configuration]:

输入一个名称,比如NXJ Flash,然后在Location处点击[Browse File System]找到LeJOS NXJ安装路径下的bin目录,并选择nxjflash.bat(这里请自行替换成希望设置的工具文件名)。
如果你安装了多个版本的LeJOS,你需要到Environment选项卡中设置你希望使用的一个NXJ_HOME值。
其他你可以设置的图形界面工具还有:
  • nxjbrowse - NXT的文件管理器
  • nxjconsoleviewer - 使用RConsole的程序调试工具(译者:超有用)
  • nxjmonitor - NXT程序远程监*控工具
  • nxjdataviewer - NXT数据日志下载工具

你也可以设置命令行工具,比如:
  • nxjflash - 刷固件工具的命令行版本
  • nxjconsole - 使用RConsole的程序调试工具的命令行版本
  • nxjsocketproxy - 联网代理工具
如果您觉得我的帖子对您有用,请不吝给我一个“赞”!
发表于 2009-10-30 11:31:37 | 显示全部楼层
不懂,先收藏了再说,谢谢楼主!
如果您觉得我的帖子对您有用,请不吝给我一个“赞”!
回复

使用道具 举报

 楼主| 发表于 2009-10-30 12:36:40 | 显示全部楼层
不懂,先收藏了再说,谢谢楼主!
yu007b 发表于 2009-10-30 11:31


能说一下哪里不懂吗?

那样我可以考虑在翻译完之后做一些补充说明。
如果您觉得我的帖子对您有用,请不吝给我一个“赞”!
回复

使用道具 举报

发表于 2011-7-1 15:16:17 | 显示全部楼层
很不错,这些示例程序哪里能找到?
如果您觉得我的帖子对您有用,请不吝给我一个“赞”!
回复

使用道具 举报

发表于 2011-7-4 10:35:52 | 显示全部楼层
frankxh 发表于 2011-7-1 15:16
很不错,这些示例程序哪里能找到?

看lejos原版网站上面的教程,每一个例子下面有一个连接,是程序。
如果您觉得我的帖子对您有用,请不吝给我一个“赞”!
回复

使用道具 举报

发表于 2011-7-4 10:36:59 | 显示全部楼层
为何还是0.85版的?官网上都出0.9的了,好多类、方法被取消了,还加上了很多,楼主要更新了!
如果您觉得我的帖子对您有用,请不吝给我一个“赞”!
回复

使用道具 举报

发表于 2011-10-15 01:06:43 | 显示全部楼层
谢谢楼主,非常详细,受到帮助了。
如果您觉得我的帖子对您有用,请不吝给我一个“赞”!
回复

使用道具 举报

发表于 2012-4-21 13:03:51 | 显示全部楼层
乐高工程  去哪儿找
如果您觉得我的帖子对您有用,请不吝给我一个“赞”!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 马上注册

本版积分规则

QQ|手机版|中文乐高 ( 桂ICP备13001575号-7 )

GMT+8, 2024-5-1 19:42 , Processed in 0.080799 second(s), 19 queries .

Powered by Discuz! X3.5

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表