二代身份证读卡器二次开发说明
- 格式:docx
- 大小:23.84 KB
- 文档页数:5
二代身份证读卡器二次开发说明
编写目的
为了在自行开发的项目中使用“新中新二代身份证读卡器”(以下简称读卡器)获得的二代身份证信息,需要对现有读卡器程序进行二次开发。
准备
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”,并声明"SynIDCardAPI.dll"
的方法.
[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("SynIDCardAPI.dll", EntryPoint = "Syn_SetMaxRFByte", CharSet =
CharSet.Ansi)]
public static extern int Syn_SetMaxRFByte(int iPort, byte ucByte, int iIfOpen);
[DllImport("SynIDCardAPI.dll", EntryPoint = "Syn_GetCOMBaud", CharSet = CharSet.Ansi)] public static extern int Syn_GetCOMBaud(int iPort, ref uint puiBaudRate);
[DllImport("SynIDCardAPI.dll", EntryPoint = "Syn_SetCOMBaud", CharSet = CharSet.Ansi)] public static extern int Syn_SetCOMBaud(int iPort, uint uiCurrBaud, uint uiSetBaud); [DllImport("SynIDCardAPI.dll", EntryPoint = "Syn_OpenPort", CharSet = CharSet.Ansi)] public static extern int Syn_OpenPort(int iPort);
[DllImport("SynIDCardAPI.dll", EntryPoint = "Syn_ClosePort", CharSet = CharSet.Ansi)] public static extern int Syn_ClosePort(int iPort);
/**************************SAM类函数 **************************/
[DllImport("SynIDCardAPI.dll", EntryPoint = "Syn_ResetSAM", CharSet = CharSet.Ansi)] public static extern int Syn_ResetSAM(int iPort, int iIfOpen);
[DllImport("SynIDCardAPI.dll", EntryPoint = "Syn_GetSAMStatus", CharSet =
CharSet.Ansi)]
public static extern int Syn_GetSAMStatus(int iPort, int iIfOpen);
[DllImport("SynIDCardAPI.dll", EntryPoint = "Syn_GetSAMID", CharSet = CharSet.Ansi)] public static extern int Syn_GetSAMID(int iPort, ref byte pucSAMID, int iIfOpen);
[DllImport("SynIDCardAPI.dll", EntryPoint = "Syn_GetSAMIDToStr", CharSet = CharSet.Ansi)]
public static extern int Syn_GetSAMIDToStr(int iPort, ref byte pcSAMID, int iIfOpen);