1.主要是找到身份证阅读器对应的开发包
2.按照开发包的指示,安装驱动,不同的开发方式,要把dll文件放到不同的地方,和计算机的系统也有关系,我当时系统是64位,把dll文件放到C:\Windows\SysWOW64或(C:\Windows\System32下);
3.sdk也运行了,但是还是会出现异常,JNative library not loaded, sorry !。最后安装了一个32位的jdk,解决了这个问题。
4.JNative读取dll文件。
5.最后还要注意dll文件,检查放到系统里面的文件名和你读取的是否一致,区分大小写。这就是我的开发经历吧,如有不对的地方欢迎交流指正。
6.部分示例代码,从网上找的下载地址:http://www.idukaqi.com/service/huashi/178.html
public static int CVR_InitComm(int Port) throws NativeException, IllegalAccessException, UnsupportedEncodingException { JNative n = null; try { n = new JNative("termb.dll", "CVR_InitComm"); n.setRetVal(Type.INT); // 指定返回参数的类型 n.setParameter(0, Port); n.invoke(); // 调用方法 return Integer.parseInt(n.getRetVal()); } finally { } } public int GetPeopleName() throws NativeException, IllegalAccessException { JNative n = null; try { n = new JNative("termb.dll", "GetPeopleName"); n.setRetVal(Type.INT); // 指定返回参数的类型 Pointer a = new Pointer(MemoryBlockFactory.createMemoryBlock(4*10)); Pointer b = new Pointer(MemoryBlockFactory.createMemoryBlock(4*30)); n.setParameter(0,b); n.setParameter(1,a); n.invoke(); byte[] by = new byte[120]; by = b.getMemory(); try { strTmp = new String(by,"gb2312"); } catch (UnsupportedEncodingException ex) { Logger.getLogger(CVR100DemoView.class.getName()).log(Level.SEVERE, null, ex); } byte[] bt = new byte[40]; bt = a.getMemory(); len = a.getAsInt(0); a.dispose(); b.dispose(); return Integer.parseInt(n.getRetVal()); } finally { } }
版权声明:本文为liwen19870618原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。