1. 程式人生 > >身份證閱讀器除錯以及sdk

身份證閱讀器除錯以及sdk

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 { } }