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 {@Overridepublic 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);}}}
}
结果:
开启后,只要刷卡就会展示刷卡信息。
java读取(华视)刷卡机的刷卡信息相关推荐
- Java CRV-100UC华视电子身份证读卡器二次开发
准备工作: 环境:windows.jdk(32bit) 华视SDK开发包: sdtapi.dll(函数的动态联接库) Termb.dll(安全模块通讯函数) WltRS.dll(身份证相片解码库) J ...
- java——抽象类实现超市POS及刷卡程序(包括GUI窗体组件,相关文本及按钮)
目录 1.程序运行截图 2.MemberCard主体及Test测试类 3.不同卡的类 4.POS类及POSJFrame类:设置GUI窗体,相关组件 1.程序运行截图 2.MemberCard主体及Te ...
- php食堂刷卡机系统,刷卡系统,食堂/餐厅刷卡管理系统
标签:刷卡,食堂,餐厅,北京,管理系统 描述详解: IC卡刷卡消费管理系统功能描述 5.2.2.1 IC卡处理 读卡: 通过读卡自动快速地调出人员信息,且显示当前卡上余额. 发卡:用户资料建立后即 ...
- 蓝桥杯_考勤刷卡 java
问题描述 小蓝负责一个公司的考勤系统, 他每天都需要根据员工刷卡的情况来确定 每个员工是否到岗. 当员工刷卡时, 会在后台留下一条记录, 包括刷卡的时间和员工编号, 只 要在一天中员工刷过一次卡, 就 ...
- Java读取串口数据
本文主要实现读取员工刷卡信息 将淘宝买的刷卡IC卡读取器插入Windows笔记本的USB接口,安装驱动,设备管理器会自动添加一个模拟的COM3串口 本次使用的Java环境为 java version ...
- 华视汐感得读卡器阅读器 上位机软件开发工具营业员系统
二代证驱动使用说明 说明: 软件在使用时需要注册 绿色软件不需要安装解压到C:\IDReader即可. 安装使用过程 1.安装软件 把IDReader.rar解压到C:\IDReader,目录结构如下 ...
- ic卡消费管理系统_智能食堂管理解决方案 智能刷卡消费
智能食堂管理解决方案 智能刷卡消费 智能食堂管理解决方案是根据学校.企业.工厂等环境的各方面信息,设计的一套整体的学校一卡通消费管理系统,整个系统涵盖食堂.超市.线下饭卡自助充值.线上微信支付宝充值等 ...
- C#实现的基于RFID射频卡的学校智能刷卡考勤系统
资源下载地址:https://download.csdn.net/download/sheziqiong/85964224 资源下载地址:https://download.csdn.net/downl ...
- 拉卡拉手机刷卡器音频通讯技术原理初步分析
拉卡拉手机刷卡器音频通讯技术原理初步分析 kimmking@163.com http://blog.csdn.net/kimmking/article/details/8712161 1. ...
最新文章
- uart口图片_认识UART接口
- 高效大数乘法 c语言,华为2012校园招聘上机题——大数相乘,两个超过100位的大数相乘C语言...
- hive olap 数据仓库_数据仓库系统的实现和使用(含OLAP重点讲解)
- 定时任务---SpringBoot
- java查看日志命令_[Java教程]【Linux】linux查看日志文件内容命令tail、cat、tac、head、echo...
- 软件有效期如何实现_如何实现软件本地化:软件本地化流程的十条守则
- (转)基于深度组合的选股策略
- Nginx配置规则详解,配置解释
- 朗强科技讲解:HDMI分配器的作用与使用方法
- 用Now SMS/MMS 发送中国移动彩信
- 控制工程中的数学建模(8)——典型环节的数学模型(之四)
- 《计算机视觉特征提取与图像处理(第三版)》笔记/第一章(1)计算机视觉基础
- 音色、音高、音强、音长
- 【暑期每日一题】洛谷 P1192 台阶问题
- Zookeeper连接异常 Got ping response for sessionid 2021-06-30
- strstr函数的自己实现
- 利用定时器实现PWM波对Zigbee(CC2530)上LED亮度进行强弱调整
- 阿里云负载均衡 SLB CLB 虚拟服务器组配置
- 测试发布,无图版~《Windows Phone 7.5本质论》第一章
- 全国青少年软件编程等级考试C语言标准解读(1_10级)