python能调用身份证读卡器吗_华视身份证读卡机Python二次开发
最近项目中用到华视身份证读卡机,那么本篇文章就是根据Python代码来实现对华视身份证读卡机中读卡操作。
华视身份证阅读器SDK手册
下面是官方提供的SDK使用手册,我就不描述到本篇文章中了,相信大家如果需要是肯定有下面这个文档。以及所需要的dll文件的。
代码二次开发说明
下面会有我开发的代码,因为我还做了日志记录功能,如果大家不需要可以根据下面代码进行修改。
一些需要加载的函数库
ctypes 【调用dll需要使用】
os【获取当前电脑用户名】
base64【将获取的头像转为bs64格式,不想转也可以】
time【循环调用方法,读取身份证】
下面代码只是我用根据我项目所需要的情况写的Python代码,仅供参考。
readCard 方法 就是我编写的主要方法
第一步 初始化端口CVR_InitComm(iPort)【我是USB读卡设备使用的端口1001】
判断端口是否打开成功,不成功1s后返回循环
第二步 开始卡认证CVR_Authenticate()【找卡操作】
判断找卡是否成功,不成功1s后返回循环
第三步 读卡操作CVR_Read_Content(4)【我这里使用的参数是4详情请看文档】
判断是否读卡成功,不成功1s后返回循环
第四步 读卡成功,记录日志以及打开读取到的身份信息文件读取到数组中【日志记录你们可以不使用】
最终的数据就是 self.cust_info 读取到的身份信息
Python主要代码如下
import ctypes
import logging
import log_config
import time
import requests
import json
import os
import base64
import subprocess
class CardOperator:
lib_dll = None
WltRS = None
Termb = None
cust_info = None
user_name = None
file_path="C:\\Users\\user_name\\AppData\\Local\\Temp\\chinaidcard\\"
def __init__(self):
try:
self.cust_info = dict()
self.lib_dll = ctypes.windll.LoadLibrary('./sdtapi.dll')
self.WltRS = ctypes.windll.LoadLibrary('./WltRS.dll')
self.Termb = ctypes.windll.LoadLibrary('./Termb.dll')
self.headers = {'content-type': "application/json;charset=utf-8"}
self.err_rs = {'status': False, 'msg': '出现异常,请查看日志'}
requests.adapters.DEFAULT_RETRIES = 5 # 增加重连次数
self.request_s = requests.session()
self.request_s.keep_alive = False # 关闭多余连接
# 获取电脑登录的用户名
self.user_name = os.getlogin()
# 记录日志文件
logging.debug('user_name:' + self.user_name)
# 修改读卡获取数据位置,将用户名赋值到地址栏
self.file_path = self.file_path.replace("user_name",self.user_name)
except Exception as ex:
logging.debug('初始化程序异常:\n'+str(ex))
def readCard(self):
res = dict()
# USB 设备端口
iPort = 1001
# 打开串口/USB
while True:
# 初始化连接【返回1 正确,2端口打开失败,-1未知错误,-2动态库加载失败】
iRet = self.Termb.CVR_InitComm(iPort)
# 判断是否打开端口
if iRet == 1:
# 开始卡认证【返回1 卡片认证成功,2寻卡失败,3选卡失败,4未连接读卡器,0动态库未加载】
ret = self.Termb.CVR_Authenticate()
# 判断是否找卡成功
if ret == 1:
# 开始读卡操作
# 参数【临时目录中保存的文件种类,具体看文档,这里使用4】
# 【返回1 读卡成功,0错误,读身份证失败,4错误,身份证读卡器未连接,99动态库未加载】
ret = self.Termb.CVR_Read_Content(4)
# 开始读卡操作,无参数【在执行目录返回文件信息】
#ret = self.Termb.CVR_Read_FPContent()
# 关闭连接【1关闭成功,2端口不合法,-1端口已关闭,-2动态库加载失败】
self.Termb.CVR_CloseComm()
# 判断是否读卡成功
if ret == 1:
# 读卡成功,记录日志
user_info = ''
logging.debug('wz.txt:' + self.file_path + "wz.txt")
logging.debug('xp.jpg:' + self.file_path + "xp.jpg")
# 打开生成的基本信息文件
with open(self.file_path + "wz.txt") as file_obj:
user_info = file_obj.read()
# 打开生成的解密的头像数据
with open(self.file_path + "xp.jpg", 'rb') as file_obj:
base64_data = base64.b64encode(file_obj.read())
# 将读取到的数据转换为数组【0名称,1性别,2民族,3出生日期,4地址,5身份证,6办理公安局,7身份证有效期】
user_info = user_info.split("\n")
self.cust_info['name'] = user_info[0]
self.cust_info['gender'] = user_info[1]
self.cust_info['born'] = user_info[3]
self.cust_info['address'] = user_info[4]
self.cust_info['code'] = user_info[5]
self.cust_info['photo'] = "data:image/jpg;base64," + base64_data.decode()
# 读取数据成功,打印数据
print( self.cust_info)
logging.debug('读取身份证成功,cust_info:' + str(self.cust_info))
else:
logging.debug('读卡失败 iRet:' + str(ret))
time.sleep(1)
continue
else:
logging.debug('卡片认证失败 iRet:' + str(ret))
time.sleep(1)
continue
else:
logging.debug('打开端口失败,请连接设备 iRet:' + str(iRet))
time.sleep(1)
continue
time.sleep(1)
python能调用身份证读卡器吗_华视身份证读卡机Python二次开发相关推荐
- python可以调用windows资源吗_在Windows中使用Python设置文件夹权限
慕丝7291255 对于那些对ACE安全描述符的"列表"感兴趣的人,使用以下数据结构.我在此方面获得了一些帮助,并且从此以后就一直使用它.typical_aces={ 203 ...
- python能调用身份证读卡器吗_最近的项目中用到读卡器,用的华视身份证阅读器,附上SDK使用手册...
最近的项目中用到读卡器,用的华视身份证阅读器,附上SDK使用手册 1.定义 应用函数开发包含下列文件: termb.dll API函数的动态联接库 sdtapi.dll 内部动态库 ...
- 华视身份证读卡器接口开发
华视身份证接口在创业的开发教程 注意事项: 1.要把dll文件和授权文件(license.dat)复制到接口文件夹里面 2.一定要把dll文件和授权文件复制到程序目录里面,否则生成图片的时候会出错 3 ...
- 最近的项目中用到读卡器,用的华视身份证阅读器,附上SDK使用手册
<script type="text/javascript">// </script> <script type="text/javascr ...
- JNA二次开发华视身份证阅读器
JNA二次开发华视身份证阅读器 前言 添加依赖 SDK资料 编写代码 遇到的问题(坑) 前言 这两天了解了一下java调用dll动态库的方法,总的有三种:JNI.JNA.JNative,其中JNA调用 ...
- 华视身份证阅读器SDK使用手册
华视身份证阅读器SDK使用手册 V1.33 华视电子读写设备有限公司 2008年07月11日 概述 本手册是操作身份证阅读器动态库应用函数的定义格式.调用方法和返回值的说明.在使用前,请确认授权文件 ...
- VUE实现华视身份证阅读器读取身份证信息(本文分两种情况,第一中是点击按钮读取信息,一种是自动读取信息)
本文是用了vue+element来实现华视身份证读卡器读取身份信息的,当然在开发之前要做好前提准备,就是厂家提供对应设备的api和安装对应的驱动.本文通过两种方法来实现读取信息,第一种是点击按钮读取信 ...
- VUE实现华视身份证阅读器读取身份证信息
VUE实现华视身份证阅读器读取身份证信息 话不多上直接上代码,写的不怎么规范多多包涵,我是在模态框实现的,在这里就只提供模态框代码. 最后附上华视身份证阅读器安装文件和浏览器插件链接: [https: ...
- 动物电子耳标阅读器|识读器|读卡器L8600系列Modbus RTU通讯协议与二次开发说明
动物电子耳标阅读器|识读器|读卡器L8600系列Modbus RTU通讯协议与二次开发说明适用于L8600-S-02.L8600-R-02,更多MODBUS TCP协议资料欢迎交流! 出厂默认配置: ...
最新文章
- 应用程序框架实战二十一:DDD分层架构之仓储(介绍篇)
- 10.Spark之RDD及编程接口
- Python批量添加库搜索路径
- html5 hgroup,HTML5 hgroup 标签
- POJ1061:青蛙的约会——题解
- python颜色相关系数_python相关系数 - osc_w6qmyr6s的个人空间 - OSCHINA - 中文开源技术交流社区...
- 【APP】Linux运维利器--Grep命令及正则表达式
- windows下批量杀死进程
- 多线程写图像文件的一点小测试
- App 更换应用图标
- php输出图片问题,解决ThinkPHP里无法输出图片问题(关于设置响应头)
- 请不用条件转移指令JG,JGE,JL,JLE等指令实现如下程序片段的功能
- 【精华】超详细的Win10安装步骤,菜鸟福音
- 【shell】How can I create a select menu in a shell script?
- scp 保留文件属组_SCP命令用法详解-hdparm工具参数详解-改变文件组命令chgrp和改变文件属主命令chown_169IT.COM...
- Android Library的创建及使用详解
- UE4 开发从入门到入土
- DNSPod十问Matt Overman:二维码真的代替域名了吗?
- 向新而生保业务增长,亚信科技持续锻造“核心引擎”
- 重症肌无力患者不能吃什么
热门文章
- 钙通道阻滞剂/拮抗剂的应用
- Mysql横向分组统计
- 常见花材的固定的方法有哪些_插花方法之巧妙固定花材
- MacOS 更新系统或XCode终端Git报错
- EMC——青青子衿,居易安信
- 手把手教你如何做自媒体赚钱,揭开自媒体赚钱真相!记得收藏
- 12月2日科技资讯|微信回应发原图泄露位置信息;Linux Kernel 5.4.1 发布
- 编写一递归函数求斐波纳契数列1,1,2,3,5,8,13,…的前40项。c语言
- csdn账号密码重置成功
- js获取内网/局域网ip地址,操作系统,浏览器版本等信息