C# 调用动态链接库读取二代身份证信息
发布时间:2025-11-05 14:07:27 作者:玩站小弟
我要评论
本文转载自微信公众号「后端Q」,作者conan。转载本文请联系后端Q公众号。概述一般来说winform应用程序解决这个问题起来时很容易的,web应用程序就麻烦一点了。你必要有联机型居民身份证阅读器一个。
本文转载自微信公众号「后端Q」,调读取代身作者conan。用动转载本文请联系后端Q公众号。态链
概述
一般来说winform应用程序解决这个问题起来时很容易的接库,亿华云web应用程序就麻烦一点了。份证你必要有联机型居民身份证阅读器一个。信息
实现方式
1、调读取代身新建一个winform控件项目ReadCardControl,WordPress模板用动添加一个主类ReadIDCard
private bool ReadIDCard() { try { BLL.API.SynIDCardAPI.IDCardData CardMsg = new BLL.API.SynIDCardAPI.IDCardData(); int nRet,态链 nPort; byte[] pucIIN = new byte[4]; byte[] pucSN = new byte[8]; nPort = Convert.ToInt32(1001); if (BLL.API.SynIDCardAPI.Syn_OpenPort(nPort) == 0) { if (BLL.API.SynIDCardAPI.Syn_SetMaxRFByte(nPort, 80, 0) == 0) { nRet = BLL.API.SynIDCardAPI.Syn_StartFindIDCard(nPort, ref pucIIN[0], 0); nRet = BLL.API.SynIDCardAPI.Syn_SelectIDCard(nPort, ref pucSN[0], 0); nRet = BLL.API.SynIDCardAPI.Syn_ReadMsg(nPort, 0, ref CardMsg); if (nRet == 0) { txtAddress.Text = CardMsg.Address; txtBirthday.Text = CardMsg.Born; txtCerticate.Text = CardMsg.IDCardNo; txtIssuingAuthoriy.Text = CardMsg.GrantDept; txtNames.Text = CardMsg.Name; txtNation.Text = Xw.Common.Helper.NationHelper.GetNationByNO(CardMsg.Nation); txtSex.Text = CardMsg.Sex == "1" ? "男" : "女"; picMan.Image = Image.FromFile(CardMsg.PhotoFileName); //lblMsg.Text = "读卡成功"; return true; } else { lblMsg.Text = "请放卡: 读取身份证信息错误"; return false; } } } else { lblMsg.Text = "打开端口失败"; return false; } return true; } catch (Exception ex) { Xw.Common.Helper.LogHelper.WriteErrorToLog(ex.Message); return false; } }2、声明DllImport,接库调用动态链接库
public class SynIDCardAPI { #region IDCardData [StructLayout(LayoutKind.Sequential,份证 CharSet = CharSet.Ansi, Pack = 1)] public struct IDCardData { [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 32)] //结构中使用的字串,免费信息发布网[]类似限定说明 说明此公共结构传输到非托管代码时封装定义 public string Name; //姓名 [MarshalAs(UnmanagedType.ByValTStr,信息 SizeConst = 6)] public string Sex; //性别 [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 20)] public string Nation; //名族 [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 18)] public string Born; //出生日期 [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 72)] public string Address; //住址 [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 38)] public string IDCardNo; //身份证号 [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 32)] public string GrantDept; //发证机关 [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 18)] public string UserLifeBegin; // 有效开始日期 [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 18)] public string UserLifeEnd; // 有效截止日期 [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 38)] public string reserved; // 保留 [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 255)] public string PhotoFileName; // 照片路径 } #endregion #region SynIDCardAPI /相关文章
以黑轴茶轴玩游戏,娱乐与高效并存(打造专属游戏神器,畅爽享受游戏乐趣)
摘要:随着游戏产业的快速发展,越来越多的人沉浸在游戏的世界中。而作为游戏的一大装备,键盘的选择也变得极为重要。在诸多键盘轴体中,黑轴茶轴因其独特的手感和出色的性能备受玩家青睐。本文将以黑...2025-11-05
pyspark除了官方的文档,网上的教程资料一直很少,但基于调度平台下,使用pyspark编写代码非常高效,程序本身是提交到spark集群中,性能上也是毫无问题的,在本文中,我们将深入探讨基于Spar2025-11-05- 复制dpkg--print-architecture 1.2025-11-05
explain关键字可以模拟优化器执行 SQL 查询语句,从而知道 MySQL 是如何处理 SQL 语句的。分析查询语句或表结构的性能瓶颈。执行语句:explain + SQL语句。表头信息如下:ex2025-11-05i7与940m显卡的完美搭配(性能出众,畅享游戏与多媒体娱乐)
摘要:在当前信息化时代,电脑已成为人们生活和工作中不可或缺的一部分。如何选择一款性能强劲的电脑成为了消费者们关注的焦点。本文将重点介绍一种完美搭配的组合——i7处理器和940m显卡,探讨...2025-11-05
本文针对笔者日常开发中对Mybatis占位符#{}和${}使用时机结合源码,思考总结而来•Mybatis版本 3.5.11•Spring boot版本 3.0.2•mybatis-spring版本 32025-11-05


最新评论