java讀取(華視)刷卡機的刷卡資訊
需求:刷卡機插在電腦上,使用java程式碼讀取身份證資訊
實現:使用java Swing開發java客戶端小程式,並生成可執行的exe檔案。
使用工具及需要的jar:因為刷卡機的開發包是dll檔案,dll檔案裡寫的刷卡機程式的初始化,讀卡等介面,需要先呼叫dll檔案,才能使用其介面。
jna.jar ----用來讀取dll檔案的jar
需要的dll檔案:
這些檔案需要放到jdk的jre的bin目錄下,且只支援32位的jdk。
exe4j ---- 把java程式做成可執行的exe軟體的工具。
#############################################程式碼部分#########################################
//身份證資訊類
public class IdReadDomain {
private String Name;
private String Gender;
private String Folk;
private String BirthDay;
private String Code;
private String Address;
private String Agency;
private String ExpireStart;
private String ExpireEnd;
private String Photo;
//讀取dll檔案裡介面
public class SDTIDread {
static{
System.loadLibrary("libSDTJNIidcard"); //libSDTJNIidcard位dll檔名稱
}
public static native int InitComm(); //初始化方法
public static native int Authenticate(); //身份證認證方法 用來判斷是否放置了身份證
public static native int CloseComm(); //關閉介面
public static native IdReadDomain idReadDomain();
}
所需的c++編寫的jni指令碼檔案,裡面定義了dll裡介面的名稱和呼叫位置
例:Java_com_zax_SDTIDread_InitComm --- com_zax為包名,SDTIDread介面類,InitComm介面名:
/* DO NOT EDIT THIS FILE - it is machine generated */
#include <jni.h>
/* Header for class com_zax_SDTIDread */
#ifndef _Included_com_zax_SDTIDread
#define _Included_com_zax_SDTIDread
#ifdef __cplusplus
extern "C" {
#endif
/*
* Class: com_zax_SDTIDread
* Method: InitComm
* Signature: ()I
*/
JNIEXPORT jint JNICALL Java_com_zax_SDTIDread_InitComm
(JNIEnv *, jclass);
/*
* Class: com_zax_SDTIDread
* Method: Authenticate
* Signature: ()I
*/
JNIEXPORT jint JNICALL Java_com_zax_SDTIDread_Authenticate
(JNIEnv *, jclass);
/*
* Class: com_zax_SDTIDread
* Method: CloseComm
* Signature: ()I
*/
JNIEXPORT jint JNICALL Java_com_zax_SDTIDread_CloseComm
(JNIEnv *, jclass);
/*
* Class: com_zax_SDTIDread
* Method: idReadDomain
* Signature: ()Lcom/zax/IdReadDomain;
*/
JNIEXPORT jobject JNICALL Java_com_zax_SDTIDread_idReadDomain
(JNIEnv *, jclass);
#ifdef __cplusplus
}
#endif
#endif
測試類:
public static void main(String[] args) {
String result = "";
//HttpRequest request = new HttpRequest();
//初始化埠檢查機器是否存在
int init = SDTIDread.InitComm();
if (init <= 0) {
System.out.println("裝置沒連線不是有效裝置");
return;
} else {
if (SDTIDread.Authenticate() > 0) {
//檢查卡片 讀取資訊
IdReadDomain test = SDTIDread.idReadDomain();
System.out.println("姓名:" + test.getName());
System.out.println("性別:" + test.getGender());
System.out.println("民族:" + test.getFolk());
System.out.println("出生:" + test.getBirthDay());
System.out.println("身份證號碼:" + test.getCode());
System.out.println("住址:" + test.getAddress());
System.out.println("簽發單位:" + test.getAgency());
System.out.println("有效期開始:" + test.getExpireStart());
System.out.println("有效期結束:" + test.getExpireEnd());
//System.out.println(Base64.PhotoJpg());
//System.out.println(Base64.PhotoBmp());
// System.err.println(Base64.PhotoCardJpg());
// SDTIDread.CloseComm();//關閉埠
} else {
System.out.println("沒有檢測到卡片");
return;
}
}
}
結果會在控制檯列印出身份證資訊。
接下來,新建刷卡類:
public class StartShuaKa {
public static void main(String[] args) {
JFrame jf = new JFrame("刷卡程式");
jf.setSize(600, 600);
jf.setLocationRelativeTo(null);
jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
//佈局
JPanel panel = new JPanel();
//文字顯示
JLabel label = new JLabel("程式開啟.....");
/**
* 啟動執行緒
* */
StartThread startThread =new StartThread();
Thread thread =new Thread(startThread);
thread.start();
panel.add(label);
jf.setContentPane(panel);
jf.setVisible(true);
}
}
在main方法中使用swing佈局,生成exe檔案時候,啟動的是main方法,所以把邏輯寫線上程類裡,在啟動main方法時,執行緒自動呼叫StartThread類裡的邏輯。
執行緒類:
public class StartThread implements Runnable {
@Override
public void run() {
String url ="*************"; //業務需要呼叫的介面
while (sdktest.Init()>0){ //定義的初始化方法
while (sdktest.auth()){
String param ="idnumber="+sdktest.getInfo().getCode();
String result = HttpRequest.sendPost(url,param);
JSONObject jsonObject = JSONObject.fromObject(result);
String msg = (String) jsonObject.get("msg");
System.err.println("身份證號:"+sdktest.getInfo().getCode() +" "+ msg);
}
}
}
}
結果:
開啟後,只要刷卡就會展示刷卡資訊。
相關文章
- 天星金融錢包三種刷卡方式 助你輕鬆出行
- 伯恩斯坦:蘋果Apple Pay佔全球刷卡交易量的 5%蘋果APP
- DP1363F&DP1332E-13.56MHz電動車NFC刷卡解鎖應用
- OpenCV-Python 視訊讀取OpenCVPython
- Java 新增 、讀取以及刪除PPT幻燈片中的視訊、音訊檔案Java音訊
- 使用JavaCV實現讀取視訊資訊及自動擷取封面圖Java
- 微信開發超市全反系統,微信支付刷卡支付,微信介面簡單配置!
- spring boot(二)配置資訊的讀取Spring Boot
- Java解析微信獲取手機號資訊Java
- 讀取多個(海康\大華)網路攝像頭的視訊流 (使用opencv-python),解決實時讀取延遲問題OpenCVPython
- Java讀取暫存器資料的方法Java
- Python下獲取視訊的旋轉角度資訊Python
- SpringBoot 複雜配置資訊讀取Spring Boot
- Python讀取Ansible playbooks返回資訊Python
- IntelliJ IDEA java maven專案讀取配置檔案資訊 java.util.ResourceBundle 方式IntelliJIdeaJavaMaven
- 讀取麒麟系統的各項版本資訊
- 直播軟體開發,影像視訊的讀取與儲存,以及呼叫相機拍攝
- 華為手機怎麼設定來電視訊?華為EMUI來電視訊秀的設定教程UI
- Java 讀取PDF中的表格Java
- java讀取倒序儲存的int型資料Java
- 使用Java通過POI讀取EXCEL中的資料JavaExcel
- CentOS下OpenCV無法讀取視訊檔案的解決方法CentOSOpenCV
- java爬取豆瓣書籍資訊Java
- Java獲取堆疊資訊的3種方法Java
- Java 讀取檔案Java
- OpenCV計算機視覺學習(1)——影像基本操作(影像視訊讀取,ROI區域擷取,常用cv函式解釋)OpenCV計算機視覺函式
- (slam工具)2 從照片讀取GNSS資訊SLAM
- ssts-hospital-web-master專案實戰記錄三十三:專案遷移-核心模組實現(useDeviceDriver-刷卡器)WebASTdev
- JAVA通過URL連結獲取視訊檔案資訊(無需下載檔案)Java
- Java 讀取 sun 包的原始碼Java原始碼
- 【Python】獲取機器使用資訊Python
- Java獲取m3u8視訊時長Java
- Java爬蟲-爬取疫苗批次資訊Java爬蟲
- iOS 獲取本機的裝置資訊UIDeviceiOSUIIDEdev
- Java讀取properties檔案連線資料庫Java資料庫
- Python爬取動態載入的視訊(梨視訊,xpath)Python
- dotnet OpenXML 讀取 PPT 內嵌 ole 格式 Excel 表格的資訊XMLExcel
- opencv python 從攝像頭獲取視訊/從檔案獲取視訊 /儲存視訊OpenCVPython