最近项目中用到华视身份证读卡机,那么本篇文章就是根据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二次开发相关推荐

  1. python可以调用windows资源吗_在Windows中使用Python设置文件夹权限

    慕丝7291255 对于那些对ACE安全描述符的"列表"感兴趣的人,使用以下数据结构.我在此方面获得了一些帮助,并且从此以后就一直使用它.typical_aces={    203 ...

  2. python能调用身份证读卡器吗_最近的项目中用到读卡器,用的华视身份证阅读器,附上SDK使用手册...

    最近的项目中用到读卡器,用的华视身份证阅读器,附上SDK使用手册 1.定义 应用函数开发包含下列文件: termb.dll      API函数的动态联接库 sdtapi.dll     内部动态库 ...

  3. 华视身份证读卡器接口开发

    华视身份证接口在创业的开发教程 注意事项: 1.要把dll文件和授权文件(license.dat)复制到接口文件夹里面 2.一定要把dll文件和授权文件复制到程序目录里面,否则生成图片的时候会出错 3 ...

  4. 最近的项目中用到读卡器,用的华视身份证阅读器,附上SDK使用手册

    <script type="text/javascript">// </script> <script type="text/javascr ...

  5. JNA二次开发华视身份证阅读器

    JNA二次开发华视身份证阅读器 前言 添加依赖 SDK资料 编写代码 遇到的问题(坑) 前言 这两天了解了一下java调用dll动态库的方法,总的有三种:JNI.JNA.JNative,其中JNA调用 ...

  6. 华视身份证阅读器SDK使用手册

    华视身份证阅读器SDK使用手册 V1.33 华视电子读写设备有限公司  2008年07月11日 概述 本手册是操作身份证阅读器动态库应用函数的定义格式.调用方法和返回值的说明.在使用前,请确认授权文件 ...

  7. VUE实现华视身份证阅读器读取身份证信息(本文分两种情况,第一中是点击按钮读取信息,一种是自动读取信息)

    本文是用了vue+element来实现华视身份证读卡器读取身份信息的,当然在开发之前要做好前提准备,就是厂家提供对应设备的api和安装对应的驱动.本文通过两种方法来实现读取信息,第一种是点击按钮读取信 ...

  8. VUE实现华视身份证阅读器读取身份证信息

    VUE实现华视身份证阅读器读取身份证信息 话不多上直接上代码,写的不怎么规范多多包涵,我是在模态框实现的,在这里就只提供模态框代码. 最后附上华视身份证阅读器安装文件和浏览器插件链接: [https: ...

  9. 动物电子耳标阅读器|识读器|读卡器L8600系列Modbus RTU通讯协议与二次开发说明

    动物电子耳标阅读器|识读器|读卡器L8600系列Modbus RTU通讯协议与二次开发说明适用于L8600-S-02.L8600-R-02,更多MODBUS TCP协议资料欢迎交流! 出厂默认配置: ...

最新文章

  1. 应用程序框架实战二十一:DDD分层架构之仓储(介绍篇)
  2. 10.Spark之RDD及编程接口
  3. Python批量添加库搜索路径
  4. html5 hgroup,HTML5 hgroup 标签
  5. POJ1061:青蛙的约会——题解
  6. python颜色相关系数_python相关系数 - osc_w6qmyr6s的个人空间 - OSCHINA - 中文开源技术交流社区...
  7. 【APP】Linux运维利器--Grep命令及正则表达式
  8. windows下批量杀死进程
  9. 多线程写图像文件的一点小测试
  10. App 更换应用图标
  11. php输出图片问题,解决ThinkPHP里无法输出图片问题(关于设置响应头)
  12. 请不用条件转移指令JG,JGE,JL,JLE等指令实现如下程序片段的功能
  13. 【精华】超详细的Win10安装步骤,菜鸟福音
  14. 【shell】How can I create a select menu in a shell script?
  15. scp 保留文件属组_SCP命令用法详解-hdparm工具参数详解-改变文件组命令chgrp和改变文件属主命令chown_169IT.COM...
  16. Android Library的创建及使用详解
  17. UE4 开发从入门到入土
  18. DNSPod十问Matt Overman:二维码真的代替域名了吗?
  19. 向新而生保业务增长,亚信科技持续锻造“核心引擎”
  20. 重症肌无力患者不能吃什么

热门文章

  1. 钙通道阻滞剂/拮抗剂的应用
  2. Mysql横向分组统计
  3. 常见花材的固定的方法有哪些_插花方法之巧妙固定花材
  4. MacOS 更新系统或XCode终端Git报错
  5. EMC——青青子衿,居易安信
  6. 手把手教你如何做自媒体赚钱,揭开自媒体赚钱真相!记得收藏
  7. 12月2日科技资讯|微信回应发原图泄露位置信息;Linux Kernel 5.4.1 发布
  8. 编写一递归函数求斐波纳契数列1,1,2,3,5,8,13,…的前40项。c语言
  9. csdn账号密码重置成功
  10. js获取内网/局域网ip地址,操作系统,浏览器版本等信息