需求:刷卡机插在电脑上,使用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读取(华视)刷卡机的刷卡信息相关推荐

  1. Java CRV-100UC华视电子身份证读卡器二次开发

    准备工作: 环境:windows.jdk(32bit) 华视SDK开发包: sdtapi.dll(函数的动态联接库) Termb.dll(安全模块通讯函数) WltRS.dll(身份证相片解码库) J ...

  2. java——抽象类实现超市POS及刷卡程序(包括GUI窗体组件,相关文本及按钮)

    目录 1.程序运行截图 2.MemberCard主体及Test测试类 3.不同卡的类 4.POS类及POSJFrame类:设置GUI窗体,相关组件 1.程序运行截图 2.MemberCard主体及Te ...

  3. php食堂刷卡机系统,刷卡系统,食堂/餐厅刷卡管理系统

    标签:刷卡,食堂,餐厅,北京,管理系统 描述详解: IC卡刷卡消费管理系统功能描述 5.2.2.1 IC卡处理 读卡: 通过读卡自动快速地调出人员信息,且显示当前卡上余额. 发卡:用户资料建立后即 ...

  4. 蓝桥杯_考勤刷卡 java

    问题描述 小蓝负责一个公司的考勤系统, 他每天都需要根据员工刷卡的情况来确定 每个员工是否到岗. 当员工刷卡时, 会在后台留下一条记录, 包括刷卡的时间和员工编号, 只 要在一天中员工刷过一次卡, 就 ...

  5. Java读取串口数据

    本文主要实现读取员工刷卡信息 将淘宝买的刷卡IC卡读取器插入Windows笔记本的USB接口,安装驱动,设备管理器会自动添加一个模拟的COM3串口 本次使用的Java环境为 java version ...

  6. 华视汐感得读卡器阅读器 上位机软件开发工具营业员系统

    二代证驱动使用说明 说明: 软件在使用时需要注册 绿色软件不需要安装解压到C:\IDReader即可. 安装使用过程 1.安装软件 把IDReader.rar解压到C:\IDReader,目录结构如下 ...

  7. ic卡消费管理系统_智能食堂管理解决方案 智能刷卡消费

    智能食堂管理解决方案 智能刷卡消费 智能食堂管理解决方案是根据学校.企业.工厂等环境的各方面信息,设计的一套整体的学校一卡通消费管理系统,整个系统涵盖食堂.超市.线下饭卡自助充值.线上微信支付宝充值等 ...

  8. C#实现的基于RFID射频卡的学校智能刷卡考勤系统

    资源下载地址:https://download.csdn.net/download/sheziqiong/85964224 资源下载地址:https://download.csdn.net/downl ...

  9. 拉卡拉手机刷卡器音频通讯技术原理初步分析

    拉卡拉手机刷卡器音频通讯技术原理初步分析  kimmking@163.com http://blog.csdn.net/kimmking/article/details/8712161 1.      ...

最新文章

  1. uart口图片_认识UART接口
  2. 高效大数乘法 c语言,华为2012校园招聘上机题——大数相乘,两个超过100位的大数相乘C语言...
  3. hive olap 数据仓库_数据仓库系统的实现和使用(含OLAP重点讲解)
  4. 定时任务---SpringBoot
  5. java查看日志命令_[Java教程]【Linux】linux查看日志文件内容命令tail、cat、tac、head、echo...
  6. 软件有效期如何实现_如何实现软件本地化:软件本地化流程的十条守则
  7. (转)基于深度组合的选股策略
  8. Nginx配置规则详解,配置解释
  9. 朗强科技讲解:HDMI分配器的作用与使用方法
  10. 用Now SMS/MMS 发送中国移动彩信
  11. 控制工程中的数学建模(8)——典型环节的数学模型(之四)
  12. 《计算机视觉特征提取与图像处理(第三版)》笔记/第一章(1)计算机视觉基础
  13. 音色、音高、音强、音长
  14. 【暑期每日一题】洛谷 P1192 台阶问题
  15. Zookeeper连接异常 Got ping response for sessionid 2021-06-30
  16. strstr函数的自己实现
  17. 利用定时器实现PWM波对Zigbee(CC2530)上LED亮度进行强弱调整
  18. 阿里云负载均衡 SLB CLB 虚拟服务器组配置
  19. 测试发布,无图版~《Windows Phone 7.5本质论》第一章
  20. 全国青少年软件编程等级考试C语言标准解读(1_10级)

热门文章

  1. 大学物理---质点运动学
  2. 【C语言练习题】大写字母转换小写字母
  3. 嵌入式代码学习心得记录
  4. 【windows命令】--cmd常用命令
  5. Linux中SVN的安装与使用
  6. 1.MySQL安装与配置
  7. Piecewise classifier mappings:Learning fine-grained learners for novel categories with few examples
  8. laravel 上传图片 或word或excel储存不了后缀
  9. python 批量爬取四级成绩单
  10. 89C51单片机中的中断系统