新版本外国人永久居留身份证EST-100身份证阅读器接口更新

news2025/3/13 7:12:29

以下是新版本外国人永久居留身份证读取C#代码:

     //身份证信息 *******************************************************************************************************
        private void button4_Click(object sender, EventArgs e)
{
if (FormIsOpenReader.IsOpenReader != 1)
{
    richTextBox_idCard_data.Text += "EST-100身份证读卡器连接失败,请先打开设备 \r\n";
    return;
}

int t_nRe = 99;
int t_nType = 1; //设置身份证读卡类型:0,文本信息;1,文本 + 照片;2,文本 + 照片 + 指纹,不读指纹读卡速度更快一些!
StringBuilder t_szPicPath = new StringBuilder("IDphoto.jpg"); //定义相片名称
StringBuilder t_arrChMsg = new StringBuilder(256);
IDINFO idInfo = new IDINFO(); //结构体
t_nRe = Donsee_ReadIDCard(t_nType, t_szPicPath, ref idInfo, t_arrChMsg); //注意结构体入参
if (t_nRe == 0)
{
    Donsee_Beep();
                if (idInfo.certType.ToString().Trim() == "I")//2017版外国人永居证
                {
                    richTextBox_idCard_data.Text += "读取成功,证件类型:2017版外国人永居证\r\n";
                    richTextBox_idCard_data.Text += "证件类型标识:" + idInfo.certType.ToString().Trim() + "\r\n";
                    richTextBox_idCard_data.Text += "英文姓名:" + idInfo.ENfullname + "\r\n";
                    richTextBox_idCard_data.Text += "性    别:" + idInfo.sex + "\r\n";
                    richTextBox_idCard_data.Text += "永居证号码:" + idInfo.number + "\r\n";
                    richTextBox_idCard_data.Text += "国籍:" + idInfo.people + idInfo.Nationality + "\r\n";
                    richTextBox_idCard_data.Text += "中文姓名:" + idInfo.name + "\r\n";
                    richTextBox_idCard_data.Text += "有效期开始:" + idInfo.signdate + "\r\n";
                    richTextBox_idCard_data.Text += "有效期结束:" + idInfo.validterm + "\r\n";
                    richTextBox_idCard_data.Text += "出生日期:" + idInfo.birthday + "\r\n";
                    richTextBox_idCard_data.Text += "证件版本号:" + idInfo.certVersion + "\r\n";
                    richTextBox_idCard_data.Text += "申请机关代码:" + idInfo.organs + "\r\n";
                    if (t_nType != 0)
                    {
                        richTextBox_idCard_data.Text += "照片原始数据:" + idInfo.Photo.Substring(0, 50) + "..\r\n";
                    }
                    //外国人永居证没有指纹数据
                }
                else if (idInfo.certType.ToString().Trim() == "J")//港澳台居民居住证
                {
                    richTextBox_idCard_data.Text += "读取成功,证件类型:港澳台通行证\r\n";
                    richTextBox_idCard_data.Text += "证件类型标识:" + idInfo.certType.ToString().Trim() + "\r\n";
                    richTextBox_idCard_data.Text += "姓名:" + idInfo.name + "\r\n";
                    richTextBox_idCard_data.Text += "性别:" + idInfo.sex + "\r\n";
                    richTextBox_idCard_data.Text += "出生日期:" + idInfo.birthday + "\r\n";
                    richTextBox_idCard_data.Text += "地址:" + idInfo.address + "\r\n";
                    richTextBox_idCard_data.Text += "港澳台居住证号码:" + idInfo.number + "\r\n";
                    richTextBox_idCard_data.Text += "签发机关:" + idInfo.organs + "\r\n";
                    richTextBox_idCard_data.Text += "有效期开始:" + idInfo.signdate + "\r\n";
                    richTextBox_idCard_data.Text += "有效期结束:" + idInfo.validterm + "\r\n";
                    richTextBox_idCard_data.Text += "通行证号码:" + idInfo.passNu + "\r\n";
                    richTextBox_idCard_data.Text += "签发次数:" + idInfo.signCount + "\r\n";
                    if (t_nType != 0)
                    {
                        richTextBox_idCard_data.Text += "照片原始数据:" + idInfo.Photo.Substring(0, 50) + "..\r\n";
                    }
                    if (t_nType == 2)
                    {
                        richTextBox_idCard_data.Text += "指纹原始数据:" + idInfo.figData.Substring(0, 50) + "..\r\n";
                    }
                }
                else if (idInfo.certType.ToString().Trim() == "Y")//新版外国人永居证

                {
                    richTextBox_idCard_data.Text += "读取成功,证件类型:新版外国人永居证\r\n";
                    richTextBox_idCard_data.Text += "证件标识:" + idInfo.certType.ToString().Trim() + "\r\n";
                    richTextBox_idCard_data.Text += "中文姓名:" + idInfo.name + "\r\n";
                    richTextBox_idCard_data.Text += "性    别:" + idInfo.sex + "\r\n";
                    richTextBox_idCard_data.Text += "换证次数:" + idInfo.certVersion + "\r\n";
                    richTextBox_idCard_data.Text += "出生日期:" + idInfo.birthday + "\r\n";
                    richTextBox_idCard_data.Text += "英文姓名:" + idInfo.ENfullname + " " +idInfo.Other + "\r\n"; //注意英文姓名,包括了备用,才是完整姓名
                    richTextBox_idCard_data.Text += "证件号码:" + idInfo.number + "\r\n";
                    richTextBox_idCard_data.Text += "有效期开始:" + idInfo.signdate + "\r\n";
                    richTextBox_idCard_data.Text += "有效期结束:" + idInfo.validterm + "\r\n";
                    richTextBox_idCard_data.Text += "国籍代码:" + idInfo.people + "/" + idInfo.Nationality + "\r\n";
                    richTextBox_idCard_data.Text += "当次申请受理机构:" + idInfo.organs + "\r\n";

                    if (idInfo.address=="") 
                    {
                        richTextBox_idCard_data.Text += "既往版本永居证号码:无" + "\r\n";
                    }
                    else { 
                        richTextBox_idCard_data.Text += "既往版本永居证号码:" + idInfo.address + "\r\n";
                    }

                    if (t_nType != 0)
                    {
                        richTextBox_idCard_data.Text += "照片数据:" + idInfo.Photo.Substring(0, 50) + "..\r\n"; //原始数据2048字符,界面只显示50字符
                    }
                }

                else  //(idInfo.certType.ToString().Trim() == "0")  //居民身份证
                {
                    richTextBox_idCard_data.Text += "读取成功,证件类型:居民身份证\r\n";
                    richTextBox_idCard_data.Text += "证件标识:" + idInfo.certType.ToString().Trim() + "\r\n";
                    richTextBox_idCard_data.Text += "姓    名:" + idInfo.name + "\r\n";
                    richTextBox_idCard_data.Text += "性    别:" + idInfo.sex + "\r\n";
                    richTextBox_idCard_data.Text += "名    族:" + idInfo.people + "\r\n";
                    richTextBox_idCard_data.Text += "出生日期:" + idInfo.birthday + "\r\n";
                    richTextBox_idCard_data.Text += "住    址:" + idInfo.address + "\r\n";
                    richTextBox_idCard_data.Text += "发证日期:" + idInfo.signdate + "\r\n";
                    richTextBox_idCard_data.Text += "有效日期:" + idInfo.validterm + "\r\n";
                    richTextBox_idCard_data.Text += "证件号码:" + idInfo.number + "\r\n";
                    richTextBox_idCard_data.Text += "发证机关:" + idInfo.organs + "\r\n";
                    richTextBox_idCard_data.Text += "其    他:" + idInfo.Other + "\r\n";
                    if (t_nType != 0)
                    {
                        richTextBox_idCard_data.Text += "照片数据:" + idInfo.Photo.Substring(0, 50) + "..\r\n"; //原始数据2048字符,界面只显示50字符
                    }
                    if (t_nType == 2)
                    {
                        richTextBox_idCard_data.Text += "指纹数据:" + idInfo.figData.Substring(0, 50) + "..\r\n"; //原始数据2048字符,界面只显示50字符
                    }
                }
    if (t_nType != 0)   //显示照片文件
    { 

        // pictureBox_idCard_photo.Image = Image.FromFile(t_szPicPath.ToString());
        // 显示照片,这个方法二次刷卡可能不显示照片,故改用下面方法来显示照片
        Image imgtmp = Image.FromFile(t_szPicPath.ToString());//这样做可以及时释放文件占用
        Bitmap img = new Bitmap(imgtmp);
        imgtmp.Dispose();
        pictureBox_idCard_photo.Image = img;
     }
}
else
{
    richTextBox_idCard_data.Text += "身份证读取失败:"+ t_arrChMsg.ToString() + ",返回值:" + t_nRe + "\r\n";
}
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1104098.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

C语言-程序环境和预处理(2)--带副作用的宏参数,宏与函数的对比,#undef,条件编译,文件包含

前言 上一篇文章–《C语言-程序环境和预处理(1)》讲述了程序的翻译环境和执行环境,编译、连接,预定义符号,#define,#符号和##符号的相关知识。 链接: 《C语言-程序环境和预处理(1)》…

【Linux】详解Linux中的Makefile文件

创作不易&#xff0c;本篇文章如果帮助到了你&#xff0c;还请点赞 关注支持一下♡>&#x16966;<)!! 主页专栏有更多知识&#xff0c;如有疑问欢迎大家指正讨论&#xff0c;共同进步&#xff01; &#x1f525;c系列专栏&#xff1a;C/C零基础到精通 &#x1f525; 给大…

idea无法通过vpn连接到数据库

本人之前遇到情况当打开vpn时&#xff0c;使用工具navicat可以连接到数据库&#xff0c;但是IDEA连接不到。这就很奇怪了&#xff0c;于是在网上大量搜寻解决方案&#xff0c;终于找到&#xff1a; 连接异常&#xff1a; 因为是Springboot项目&#xff0c;可以在启动类的配置…

SLAM从入门到精通(dwa速度规划算法)

【 声明&#xff1a;版权所有&#xff0c;欢迎转载&#xff0c;请勿用于商业用途。 联系信箱&#xff1a;feixiaoxing 163.com】 要说搜路算法&#xff0c;这个大家都比较好理解。毕竟从一个地点走到另外一个地点&#xff0c;这个都是直觉上可以感受到的事情。但是这条道路上机…

入侵检测代码

在人工智能中有个入侵检测&#xff1a;当检测到的目标位于指定区域内才算是入侵&#xff0c;思路很简单&#xff0c;判断相关坐标即可&#xff1a; from matplotlib import pyplot as plt, patches from shapely.geometry import Polygon, Pointdef is_intrusion(target_box, …

HTML基础入门03

1.表单标签 表单是让用户输入信息的重要途径. 分成两个部分: 表单域: 包含表单元素的区域. 重点是 form 标签. 表单控件: 输入框, 提交按钮等. 重点是 input 标签. 1.1form标签 <form action"test08.html">hello world </form> 描述了要把数据按照什…

特斯拉pre-test (Go)

特斯拉pre-test &#xff08;Go&#xff09; 1 Q12 Q23 Q3 1 Q1 原文&#xff1a; You are given an implementation of a function Solution that, given a positive integer N, prints to standard output another integer, which was formed by reversing a decimal repres…

互联网Java工程师面试题·Java 总结篇·第五弹

目录 47、Java 语言如何进行异常处理&#xff0c;关键字&#xff1a;throws、throw、try、catch、finally 分别如何使用&#xff1f; 48、运行时异常与受检异常有何异同&#xff1f; 49、列出一些你常见的运行时异常&#xff1f; 50、阐述 final、finally、finalize 的区别…

【Java学习之道】指引篇:从入门到入世

引言 你是否曾为找不到适合自己的Java学习之路而烦恼&#xff1f;是否想摆脱混乱的Java知识体系&#xff0c;找到一条从入门到精通的捷径&#xff1f;来《Java学习之道》吧&#xff0c;本专栏为你量身打造&#xff0c;让我们一起轻松踏上Java学习之旅&#xff01; 第一章、Jav…

AD620A运算放大器的原理、应用和性能特点 | 百能云芯

在电子领域&#xff0c;AD620A是一种广泛应用的运算放大器&#xff0c;也被称为运放。它在信号放大、传感器接口和测量应用中扮演着重要的角色。接下来云芯将带您深入探讨AD620A运放的原理、应用领域以及性能特点&#xff0c;以帮助您更好地理解它的作用和价值。 AD620A是一种精…

CentOS有IP地址,连接不上Xshell或使用Xshell时突然断开

问题原因&#xff1a;未在电脑主机的网络中进行IP地址配置 解决办法&#xff1a; 1.打开控制面板&#xff0c;选择‘网络与共享中心’ 2.选择“更改适配器设置” 3.右键点击以太网3“属性” 4.选择协议版本4&#xff0c;点击属性 5.IP地址填写CentOS的IP地址&#xff1a;192.…

微信小程序进阶——Flex弹性布局轮播图会议OA项目(首页)

目录 一、Flex弹性布局 1.1 什么是Flex弹性布局 1.1.1 详解 1.1.2 图解 1.1.3 代码演示效果 1.2 Flex弹性布局的核心概念 1.3 Flex 弹性布局的常见属性 1.4 Flex弹性布局部分属性详解 1.4.1 flex-direction属性 1.4.2 flex-wrap属性 1.4.3 flex-flow属性 1.4.4 ju…

Redis数据结构之quicklist

前言 为了节省内存&#xff0c;Redis 推出了 ziplist 数据类型&#xff0c;采用一种更加紧凑的方式来存储 hash、zset 元素。因为查找的时间复杂度是 O(N)&#xff0c;且写入需要重新分配内存&#xff0c;所以它仅适用于小数据量的存储&#xff0c;而且它还存在 连锁更新 的风…

Redis AOF持久化和ReWrite

前言 Redis 的 RDB 持久化机制简单直接&#xff0c;把某一时刻的所有键值对以二进制的方式写入到磁盘&#xff0c;特点是恢复速度快&#xff0c;尤其适合数据备份、主从复制场景。但如果你的目的是要保证数据可靠性&#xff0c;RDB 就不太适合了&#xff0c;因为 RDB 持久化不…

Epoch、批量大小、迭代次数

梯度下降 它是 机器学习中使用的迭代 优化算法&#xff0c;用于找到最佳结果&#xff08;曲线的最小值&#xff09;。 坡度 是指 斜坡的倾斜度或倾斜度 梯度下降有一个称为 学习率的参数。 正如您在上图&#xff08;左&#xff09;中看到的&#xff0c;最初步长较大&#…

2023年中国半导体缺陷检测设备市场规模及发展趋势分析[图]

前道检测设备帮助晶圆厂在更快时间内提升芯片良率&#xff0c;按功能可分为参数量测、缺陷检测。前道检测设备按功能可分为参数量测、缺陷检测。 半导体缺陷检测设备分类 资料来源&#xff1a;共研产业咨询&#xff08;共研网&#xff09; 2023-2029年中国半导体缺陷检测设备行…

libcurl库使用

libcurl介绍 libcurl是一个跨平台的网络协议库&#xff0c;支持http, https,ftp, gopher, telnet, dict, file, 和ldap 协议。libcurl同样支持HTTPS证书授权&#xff0c;HTTP POST,HTTP PUT, FTP 上传, HTTP基本表单上传&#xff0c;代理&#xff0c;cookies和用户认证。 基本…

linux加密和安全

sudo实现授权 添加 vim /etc/sudoers luo ALL(root) /usr/bin/mount /deb/cdrom /mnt/ 切换luo用户使用 sudo mount /dev/cdrom /mnt %sudo ALL(ALL:ALL) ALL %sudo 表示该规则适用于sudo用户组中的所有成员。 ALL(ALL:ALL) 表示可以在任何主机上&#xff0c;以任何用户身份来…

2023.10.17 关于 wait 和 notify 的使用

目录 引言 方法的使用 引入实例&#xff08;wait 不带参数版本&#xff09; wait 方法执行流程 wait 和 notify 组合实例 wait 带参数版本 notify 和 notifyAll 的区别 经典例题 总结 引言 线程最大的问题是抢占式执行&#xff0c;随机调度虽然线程在内核里的调度是随…

UITesting 界面测试

1. 创建界面测试视图 UITestingBootcampView.swift import SwiftUI/// 界面测试 ViewModel class UITestingBootcampViewModel: ObservableObject{let placeholderText: String "Add name here..."Published var textFiledText: String ""Published var…