二代身份证读卡器二次开发说明
编写目的
为了在自行开发的项目中使用“新中新二代身份证读卡器”(以下简称读卡器)获得的二代身份证信息,需要对现有读卡器程序进行二次开发。 准备
SDK: 新中新二代证SDK开发包.rar
日本生命公司破产cq步 示例代码: “新中新二代证SDK开发包.rar\\DLL\\测试程序\\C#” 读卡器型号: DKQ-116D 版本号:DU
使用方法
由于开发包中已提供了相对完整的示例代码,因此本文直接以示例代码中的例子进行讲解。
一、 开发前先运行开发包中”\\DLL\\”或者 “新中新二代身份证验证系统”
以保证读卡器硬件连接及驱动都已正确安装. 或者单独安装驱动程序 (一)、“新中新二代身份证验证系统” 1. 运行程序 2. 在读卡器上扫描二代身份证,在界面上查看是否显示身份证信息 (二)、 “” 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); [DllI
mport(\, 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_R
eadIINSNDN(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);
>核酸外切酶