MES系列--(1)JNI使用入门
来源:互联网 发布:淘宝供应商怎么找 编辑:程序博客网 时间:2024/05/18 04:53
在公司从事MES产品开发,先解释一下MES含义吧,MES:Manufacture Execution System,生产执行系统。这层系统是和工业生产中的硬件设备进行交互,控制硬件设备或从硬件设备获取数据。在真实的企业级分层应用中,这一层工作在ERP层之下,向ERP层提供数据,供上层应用节点进行分析处理。、
身为Java Coder,一提到硬件编程,大家立马就想到了JNI(java native interface)java本地化接口。这是java提供的一套和其他语言进行交互调用的标准,尤其是和C,C++。因为实际情况下,硬件厂商提供的硬件驱动程序通常都是C或C++写成的,而我们的系统是基于java的,这两者直接能够产生交互,就只能通过JNI了。
但JNI有自己的标准(即本地代码需要有特殊的接口命名和参数规范),硬件厂商提供的驱动程序(通常为一个dll动态链接库文件)不会符合这种标准,我们的做法是再做一套符合JNI标准的硬件驱动程序,在这套程序中,驱动硬件的部分转调硬件厂商提供的驱动程序,即封装一层。
我们假设这样一个实例,一个32路信号采集卡,硬件厂商提供的驱动程序为一个dll文件,其中有3个接口:打开设备;访问某一路信号;关闭设备。我们要通过java程序去控制并访问这个硬件,标准操作步骤为:
1. 编写用于访问硬件的Java类DeviceHandler,其中有3个native修饰符修饰的方法:native boolean openDevice(); native int accessSignal(int signalIndex); native boolean closeDevice();
2. 通过JDK提供的javah.exe(JDK的bin目录中),将上述类编译后的class文件导出为.h文件,该头文件中包含了对应于上述方法的3个方法定义
3. 安装Visual Studio(或其他顺手的工具)建dll工程,将上述的.h文件进行实现,在实现过程中,通过引用调用硬件厂商提供的dll文件的相关方法即可。最后将这个工程构建为dll文件。
4. 其他的Java类中通过System.loadLibrary(自己生成的dll),即可创建DeviceHandler对象,并且调用其中的native方法。
上述是通过JNI访问硬件设备的基本步骤,没涉及特别具体的部分。但这种操作方式是实际应用过经过检验可行的。以后再谈谈具体的JNI编程。
目前Java又出了一个JNA(java native access)据说比JNI更好用一些。这个实际中没用过,等测试一下后,再写一下分享一点经验。
- MES系列--(1)JNI使用入门
- MES系列--(2)JNA使用介绍
- JNI开发基础入门系列(一)
- MES入门.序
- Android Studio 使用JNI入门
- MES入门.预备知识.生产
- MES入门.预备知识.质量
- MES入门.预备知识.库存
- MES入门.预备知识.名词解释
- MES入门.浅谈ISA-88
- MES入门.浅谈ISA-95
- JNI学习入门1
- JNI入门(下)
- JNI入门(上)
- JNI编程入门(-)
- JNI入门(续)
- JNI入门----(一)
- 超详细的JNI(NDK)入门与使用
- 响应WM_KEYDOWN消息
- 在eclipse或者myeclipse里面快速找到本地class文件
- SiteMap(站点地图)
- bada 2D游戏编程之四——设计游戏循环
- PowerShell Vs2010
- MES系列--(1)JNI使用入门
- 如何查看进程关联的文件
- 关于《学编程,还有必要上大学吗? 》
- Linux下限制网卡的带宽
- OpenGL库设置
- C程序查找段错误的方法
- How to find block sql from dba_waiters v$session v$sql
- 用php实现文件下载, 同时支持下断点形式
- Android之TelephonyManager类的方法详解