二代身份证读卡器二次开发说明
更新时间:2023-10-31 08:37:01 阅读量: 综合文库 文档下载
- 二代身份证读卡器推荐度:
- 相关推荐
二代身份证读卡器二次开发说明
编写目的
为了在自行开发的项目中使用“新中新二代身份证读卡器”(以下简称读卡器)获得的二代身份证信息,需要对现有读卡器程序进行二次开发。
准备
SDK: 新中新二代证SDK开发包.rar
示例代码: “新中新二代证SDK开发包.rar\\DLL\\测试程序\\C#” 读卡器型号: DKQ-116D 版本号:DU
使用方法
由于开发包中已提供了相对完整的示例代码,因此本文直接以示例代码中的例子进行讲解。
一、 开发前先运行开发包中”\\DLL\\DLLTestSDK.exe”或者 “新中新二代身份证验证系统”
以保证读卡器硬件连接及驱动都已正确安装. 或者单独安装驱动程序 (一)、“新中新二代身份证验证系统” 1. 运行程序 2. 在读卡器上扫描二代身份证,在界面上查看是否显示身份证信息 (二)、 “DLLTestSDK.exe” 1. 运行程序
2. 点击“自动寻找读卡器”,查看列表框提示信息及”端口号”内容是否被改变
3. 点击”使用结构体返回信息”,查看列表框中是否已输出身份证信息.
二、 将” sdtapi.dll”、” SynIDCardAPI.dll”、” WltRS.dll” 3个文件复制到与程序运行相同目
录
三、 参考示例代码,在自己开发的类中定义结构体” 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; // 照片路径 }
/************************端口类API *************************/
[DllImport(\, EntryPoint = \, CharSet = CharSet.Ansi)]
public static extern int Syn_SetMaxRFByte(int iPort, byte ucByte, int iIfOpen); [DllImport(\, EntryPoint = \, CharSet = CharSet.Ansi)] public static extern int Syn_GetCOMBaud(int iPort, ref uint puiBaudRate);
[DllImport(\, EntryPoint = \, CharSet = CharSet.Ansi)] public static extern int Syn_SetCOMBaud(int iPort, uint uiCurrBaud, uint uiSetBaud); [DllImport(\, EntryPoint = \, CharSet = CharSet.Ansi)] public static extern int Syn_OpenPort(int iPort);
[DllImport(\, EntryPoint = \, CharSet = CharSet.Ansi)] public static extern int Syn_ClosePort(int iPort);
/**************************SAM类函数 **************************/
[DllImport(\, EntryPoint = \, CharSet = CharSet.Ansi)] public static extern int Syn_ResetSAM(int iPort, int iIfOpen);
[DllImport(\, EntryPoint = \, CharSet = CharSet.Ansi)]
public static extern int Syn_GetSAMStatus(int iPort, int iIfOpen);
[DllImport(\, EntryPoint = \, CharSet = CharSet.Ansi)] public static extern int Syn_GetSAMID(int iPort, ref byte pucSAMID, int iIfOpen); [DllImport(\, EntryPoint = \, CharSet = CharSet.Ansi)]
public static extern int Syn_GetSAMIDToStr(int iPort, ref byte pcSAMID, int iIfOpen);
/*************************身份证卡类函数 ***************************/ [DllImport(\, EntryPoint = \, CharSet = CharSet.Ansi)]
public static extern int Syn_StartFindIDCard(int iPort, ref byte pucIIN, int iIfOpen); [DllImport(\, EntryPoint = \, CharSet = CharSet.Ansi)]
public static extern int Syn_SelectIDCard(int iPort, ref byte pucSN, int iIfOpen); [DllImport(\, EntryPoint = \, CharSet = CharSet.Ansi)] public static extern int Syn_ReadBaseMsg(int iPort, ref byte pucCHMsg, ref uint puiCHMsgLen, ref byte pucPHMsg, ref uint puiPHMsgLen, int iIfOpen);
[DllImport(\, EntryPoint = \, CharSet = CharSet.Ansi)] public static extern int Syn_ReadIINSNDN(int iPort, ref byte pucIINSNDN, int iIfOpen); [DllImport(\, EntryPoint = \, CharSet = CharSet.Ansi)]
public static extern int Syn_ReadBaseMsgToFile(int iPort, ref byte pcCHMsgFileName, ref uint puiCHMsgFileLen, ref byte pcPHMsgFileName, ref uint puiPHMsgFileLen, int iIfOpen); [DllImport(\, EntryPoint = \, CharSet = CharSet.Ansi)]
public static extern int Syn_ReadIINSNDNToASCII(int iPort, ref byte pucIINSNDN, int iIfOpen);
[DllImport(\, EntryPoint = \, CharSet = CharSet.Ansi)]
public static extern int Syn_ReadNewAppMsg(int iPort, ref byte pucAppMsg ,ref uint puiAppMsgLen , int iIfOpen);
[DllImport(\, EntryPoint = \, CharSet = CharSet.Ansi)] public static extern int Syn_GetBmp(int iPort, ref byte Wlt_File);
[DllImport(\, EntryPoint = \, CharSet = CharSet.Ansi)] public static extern int Syn_ReadMsg(int iPortID, int iIfOpen, ref IDCardData pIDCardData);
[DllImport(\, EntryPoint = \, CharSet = CharSet.Ansi)] public static extern int Syn_FindReader();
/***********************设置附加功能函数 ************************/ [DllImport(\, EntryPoint = \, CharSet = CharSet.Ansi)]
public static extern int Syn_SetPhotoPath(int iOption, ref byte cPhotoPath); [DllImport(\, EntryPoint = \, CharSet = CharSet.Ansi)]
public static extern int Syn_SetPhotoType(int iType);
[DllImport(\, EntryPoint = \, CharSet = CharSet.Ansi)]
public static extern int Syn_SetPhotoName(int iType);
[DllImport(\, EntryPoint = \, CharSet = CharSet.Ansi)] public static extern int Syn_SetSexType(int iType);
[DllImport(\, EntryPoint = \, CharSet =
CharSet.Ansi)] public static extern int Syn_SetNationType(int iType); [DllImport(\, EntryPoint = \, CharSet = CharSet.Ansi)] public static extern int Syn_SetBornType(int iType); [DllImport(\, EntryPoint = \, CharSet = CharSet.Ansi)] public static extern int Syn_SetUserLifeBType(int iType); [DllImport(\, EntryPoint = \, CharSet = CharSet.Ansi)] public static extern int Syn_SetUserLifeEType(int iType,int iOption);
四、 调用” Syn_FindReader()” 获得读卡器端口号
五、 如需保存照片 调用” Syn_SetPhotoPath” 设置照片保存位置,调用” Syn_SetPhotoType()”
设置保存格式,调用” Syn_SetPhotoName()”设置文件名规范. 六、 读取信息:
步骤: 打开端口->设置通讯字节数->读取卡信息->指向读到的第一张卡信息->将卡信息填入结构体-> 读取结构体信息 参考示例代码:
private void button17_Click(object sender, EventArgs e) {
IDCardData CardMsg = new IDCardData(); int nRet,nPort; string stmp;
byte[] pucIIN = new byte[4]; byte[] pucSN = new byte[8];
nPort = Convert.ToInt32(textBox1.Text); if (Syn_OpenPort(nPort) == 0) {
if (Syn_SetMaxRFByte(nPort,80,0)==0) {
nRet = Syn_StartFindIDCard(nPort, ref pucIIN[0], 0); nRet = Syn_SelectIDCard(nPort,ref pucSN[0], 0); nRet = Syn_ReadMsg(nPort, 0, ref CardMsg); if (nRet == 0) {
stmp = Convert.ToString(System.DateTime.Now) + \姓名:\ + CardMsg.Name;
listBox1.Items.Add(stmp);
stmp = Convert.ToString(System.DateTime.Now) + \性别:\ + CardMsg.Sex;
listBox1.Items.Add(stmp);
stmp = Convert.ToString(System.DateTime.Now) + \民族:\ + CardMsg.Nation;
listBox1.Items.Add(stmp);
stmp = Convert.ToString(System.DateTime.Now) + \出生日期:\ + CardMsg.Born;
listBox1.Items.Add(stmp);
stmp = Convert.ToString(System.DateTime.Now) + \地址:\ + CardMsg.Address;
listBox1.Items.Add(stmp);
stmp = Convert.ToString(System.DateTime.Now) + \身份证号:\ + CardMsg.IDCardNo;
listBox1.Items.Add(stmp);
stmp = Convert.ToString(System.DateTime.Now) + \发证机关:\ + CardMsg.GrantDept;
listBox1.Items.Add(stmp);
stmp = Convert.ToString(System.DateTime.Now) + \有效期开始:\ + CardMsg.UserLifeBegin;
listBox1.Items.Add(stmp);
stmp = Convert.ToString(System.DateTime.Now) + \有效期结束:\ + CardMsg.UserLifeEnd;
listBox1.Items.Add(stmp);
stmp = Convert.ToString(System.DateTime.Now) + \照片文件名:\ + CardMsg.PhotoFileName;
listBox1.Items.Add(stmp); } else {
stmp = Convert.ToString(System.DateTime.Now) + \读取身份证信息错误\;
listBox1.Items.Add(stmp); } } } else {
stmp = Convert.ToString(System.DateTime.Now) + \打开端口失败\; listBox1.Items.Add(stmp); } }
正在阅读:
二代身份证读卡器二次开发说明10-31
二年级数学下册 二《方向与位置》东南西北练习 北师大版04-26
Excel2010考试试题2(含答案)03-20
患者身份识别制度和程序05-20
“老乡鸡”企业经营模式探析08-10
英语单词拼读规则表03-17
父母必读的32条教育金言08-26
励志作文400字03-13
3酸碱滴定法10-26
军事理论考试答案08-10
- 多层物业服务方案
- (审判实务)习惯法与少数民族地区民间纠纷解决问题(孙 潋)
- 人教版新课标六年级下册语文全册教案
- 词语打卡
- photoshop实习报告
- 钢结构设计原理综合测试2
- 2014年期末练习题
- 高中数学中的逆向思维解题方法探讨
- 名师原创 全国通用2014-2015学年高二寒假作业 政治(一)Word版
- 北航《建筑结构检测鉴定与加固》在线作业三
- XX县卫生监督所工程建设项目可行性研究报告
- 小学四年级观察作文经典评语
- 浅谈110KV变电站电气一次设计-程泉焱(1)
- 安全员考试题库
- 国家电网公司变电运维管理规定(试行)
- 义务教育课程标准稿征求意见提纲
- 教学秘书面试技巧
- 钢结构工程施工组织设计
- 水利工程概论论文
- 09届九年级数学第四次模拟试卷
- 二代
- 读卡器
- 身份证
- 说明
- 开发
- 《转发国家发展改革委关于发布项目申请报告通用文本的通知》
- 永教德1号
- 2012届高考物理知识点总结复习 原子和原子核13
- 单回路反馈控制系统
- 一采区1216工作面作业规程(修改中)
- 土壤学复习材料
- 计算机程序设计基础A卷
- 一个隧道计算书
- 基于matlab的M-QAM通信系统的仿真 - 图文
- 北外英语专业四年的课程
- 煤矿避难硐室实施方案
- 关于转发《江苏省财政厅关于颁发〈江苏省基本建设财务管理暂行规定〉的通知》的通知
- 2019年最新入党积极分子思想汇报范文:回眸党史,感恩今天思想汇报文档(5)
- 自然辩证法思考题整理 - 别人整理的
- 1.1 陈情表 教案 Word版(鲁人版必修三)(1)
- 2018届二轮大规模的海水运动 专题卷(全国适用)+Word版含解析
- 公司经营管理方针目标
- 工程施工项目管理办法
- 多元统计思考题及答案
- 高二地理 森林的开发和保护 - 以亚马孙热带雨林为例练习题及答案解析