英创主板JAVA应用开发简介

来源:互联网 发布:零式战斗机知乎 编辑:程序博客网 时间:2024/06/01 09:14

随着互联网技术的快速发展,Java语言以其简单可靠,安全性高,可移植性强等特点得到极大普及,长期占据编程语言排行榜第一的位置。开发者使用Java语言开发应用程序,可以达到“一次编译,到处运行”的目的。

所谓“一次编译”是指对于开发者而言,只需要使用Java编译工具对Java源文件(.java文件)进行一次编译,生成字节码文件(.class文件);而“到处运行”是指字节码.class文件可以运行在所有装有Java运行环境(JRE - Java Runtime Environment)的设备上运行。只要设备上装有对应操作系统的JRE,就能运行所有.class文件,无需再次编译。
这里写图片描述
图1. Java语言编译执行示意图

为了实现对Java应用程序的支持,英创在Linux的文件系统中移植了针对嵌入式Linux的JRE。JRE的运行需要占用的内存超过100MB,英创的ESM335x、ESM6800和ESM6802三种产品线的主板可满足Java虚拟对硬件环境的要求。另一方面,ESM335x和ESM6800受NandFlash容量限制,预装了JRE的ESM335x和ESM6800主板,将不再支持QT。

鉴于英创主板主要应用于工业控制和通信管理领域,所以英创提供的Java硬件支持包主要包括对以太网口、串口、CAN、GPIO、SPI、I2C等工控接口的支持。目前暂时还不支持对显示接口(/dev/fb0)的访问。英创将提供访问硬件所需的名为libemtronixhardware.so的动态库和相关接口Java类源文件给客户。libemtronixhardware.so完全符合JNI规范,用户加载之后,即可通过英创提供的java类,访问硬件接口。为了让用户能够快速熟悉英创主板上的Java程序开发,英创提供了完整的开发环境和应用示例,用户可以按如下步骤配置学习Java应用程序开发。在此过程中如果遇到问题,请先看7、常见问题Q&A。如果不能解决问题,请通过电话或者邮件联系我们。

1、在PC上安装Java开发工具包(JDK)

要进行Java应用程序的开发工作,必须要在PC机上安装Java软件开发工具包JDK。用户可以直接通过以下链接到oracle官网下载对应操作系统的JDK。http://www.oracle.com/technetwork/java/javase/downloads/index.html
这里写图片描述
这里写图片描述
下载后请按提示完成安装。

2、安装eclipse集成开发环境

英创提供了eclipse-java-kepler-SR1-win32-x86_64.zip,用户只需要解压到磁盘即可。

3、导入英创示例程序到eclipse

英创公司为用户快速熟悉英创主板的Java应用程序开发提供了所有接口的示例程序。用户只需要将示例程序导入到eclipse中即可进行学习。

打开eclipse软件后,首先,点击左上角“File”–>“Import…”。
这里写图片描述
这里写图片描述
在弹出的窗口中选择“General”>>“Existing Projects into Workspace”,点击“Next”。

这里写图片描述
在弹出的窗口中点击“Browse”,选择英创示例程序testEMHardwarelib所在目录,点击确定。最后点击“finish”即可。

4、在eclipse中编辑编译Java示例程序

成功到导入testEMHardwarelib示例程序后,在eclipse的Package Explorer可以看到项目的目录结构。其中src目录下是项目的源代码,JRE System Library是安装JDK时安装的Java类库。src目录下分了两个源码包:com.emtronix.main是测试程序,emtronix.hardware是英创针对英创主板的硬件接口封装的功能接口类及相关数据结构。
这里写图片描述

为了让Java应用程序能够访问英创主板的硬件接口,英创在文件系统中提供了动态链接库libemtronixhardware.so,Java应用程序只要加载这个动态库,就能够使用其中的类,调用类的公共方法去访问对应硬件接口。如下图所示,用户可以直接双击com.emtronix.main包中的testCANMain.java源码,进行编辑,在源文件中加载emtronixhardware库后,调用emtronix.hardware包中的CAN功能类,即可使用CAN类的Open、SendFrame、RecvFrame、Close等接口完成CAN通信的应用开发。
这里写图片描述

完成编辑后,需要编译生成后缀为.class的字节码文件。eclipse默认是在源文件保存后自动编译,在项目所在目录的testEMHardwarelib/bin目录下生成与src下源码包对应的目录结构和class文件。

如果用户不需要自动编译,可以在Project页面选择“Build Automatically”将前面的钩去掉。这是之前灰化的“Build Project”会变为激活状态,每次保存源文件后,使用Build Project就可以编译项目。
这里写图片描述

5、在英创主板上运行testEMHardwarelib示例程序

将testEMHardwarelib/bin目录下的所有目录全部拷贝到英创主板esm335x的/mnt/nandflash目录下。进入/mnt/nandflash目录,使用java com.emtronix.main.testCANMain命令运行CAN测试程序。其中,java命令是jre提供的运行java程序的指令,com.emtronix.main.testCANMain是测试类的完整类名,包括包名+类名,java指令需要跟完整的类名作为参数。CAN测试程序运行如下图所示,同理,要测试其他接口只需要将完整类名换成对应接口即可。
这里写图片描述

6、使用英创提供的功能类源码包emtronix.hardware开发自己的应用程序

使用英创提供的功能类可以快速方便的开发自己的应用程序。首先,用户要新建一个java项目,“File”>>“New”>>“Java project”,弹出“New Java Project”窗口,可以参考下图设置。点击Finish。
这里写图片描述

然后,右键选中testEMHardwarelib项目src目录下的emtronix.hardware功能类包,选择Copy。
这里写图片描述

然后选中testMyApp项目的src目录,右键选择Paste或者直接“Ctrl+v”。如果粘贴失败,请重新复制,再次粘贴,多试几次。
这里写图片描述

接着,在src目录下新建一个源码包mypackage。
这里写图片描述
这里写图片描述

然后在mypackage中新建一个MyApp类,并勾选“public static void main”。
这里写图片描述
这里写图片描述

在类中静态加载emtronixhardware动态库,这时已经配置好英创主板的Java应用程序开发环境,用户可以按照自己的业务逻辑,遵照Java语法,开发Java应用程序。
这里写图片描述

7、常见问题Q&A

Q1:导入项目后中文注释乱码
A1:有的项目在linux系统下使用的utf-8编码,有的项目在windws中使用的是GBK编码,当导入的项目编码与操作系统编码不同时会出现中文乱码。这时可以在项目属性的resource页面选择匹配的编码格式即可。
这里写图片描述

Q2:复制粘贴emtronix.hardware包到新项目后,编译出错
Syntax error, ‘for each’ statements are only available if source level is 1.5 or greater;
The method format(String, Object[]) in the type String is not applicable for the arguments (String, int)
这里写图片描述

A2:以上错误是因为java compiler设置的兼容版本太低,而emtronix.hardware中用到了部分接口只在1.5以上才有。右键项目>>properties>>Java Compiler可以看到eclipse默认的设置是1.4。

勾选“Enable project specific settings”,选择“Compiler compliance level”为1.5或者更高,点击OK,重新编译项目即可。
这里写图片描述

Q3:在英创主板上运行class文件,Could not find or load main class
A3:可能是java命名跟的参数并不是完整的类名,完整的类名包括了包名和类名,要在包的上级目录运行java命令,跟上完整的类名。例如:
这里写图片描述

Q4: build project在bin目录中不再生成class文件
A4:Close project,然后右键项目选择delete,不勾选“delete project contents on disk”。最后重新导入项目,重新编译。
这里写图片描述

成都英创信息技术有限公司 http://www.emtronix.com
原文链接:http://www.emtronix.com/article/article20171077.html
原文下载:http://www.emtronix.com/download/emtronix_java.pdf