去年的九月末和十月初,研究过如何用java对串口操作,链接一个RFID读卡器。
对串口发送指令和接收数据,交互的过程是单工异步。先后尝试了四种方法,最后一种成功了!
这四种方法先后是:socket,javax.comm,javax.rtx,jnative。
读卡器的厂家带一个例子,VB的,内部使用他们封装的.dll动态函数链接库,开始一直没想用这个.dll文件,所有的指令都是自己看着协议写。
导致了前面方法的失败,他们也一定能成功,每种方法都尝试了两天。只是最后一种最安全。
最近,要使用硬件了,可能会涉及.dll。所以将jnative的方法回忆一下:
先下载Jnative所要使用的包http://sourceforge.net/projects/jnative
API http://jnative.free.fr/docs/
解压下载的JNative包获得三个文件,分别是:JNativeCpp.dll,libJNativeCpp.so,JNative.jar 。JNativeCpp.dll是提供给WINDOWS
的库组件需要复制到WINDOWS/SYSTEM32目录下
libJNativeCpp.so是提供给linux下的组件,没怎么用- -!
JNative.jar这是一个扩展包,可以复制到c:/jdk/jre/lib/ext下自己的目录结构,会自动加载,或者直接引入到工程包中。
结构映射(Structure Mapping)
Type | Length | JNative class |
DWORD | 4 | org.xvolks.jnative.misc.basicStructures.LONG |
HWND | 4 | org.xvolks.jnative.misc.basicStructures.HWND |
COLORREF | 4 | org.xvolks.jnative.misc.basicStructures.LONG |
COLORREF* | 4 | org.xvolks.jnative.pointers.Pointer |
LPARAM | 4 | org.xvolks.jnative.misc.basicStructures.LPARAM |
LPCCHOOKPROC | 4 | org.xvolks.jnative.util.Callback |
LPCTSTR | 4 | org.xvolks.jnative.pointers.Pointer |
首先创建JNative对象
JNative n=new JNative(*.dll,function)此处为库文件加载并指定方法名
好多刚开始弄的朋友经常会问总是找不到DLL库文件和function方法,那是因为搞JAVA的不熟悉C的库文件创件,我们自己写的文件只提供了对C、C++内部的使用,我们需要把外部调用的DLL文件进行声明下面例子就如这样写
#ifndef wwweee
#define wwweee
extern "C" _declspec (dllexport) int add(int a,int b);
#endif
--------------------------end------------------------next-------I-just-code-it --------------------
此外大家还可以使用JNI,Jawin,Jacob等方法来做!