二代身份证读卡器二次开发说明

  • 格式:docx
  • 大小:23.84 KB
  • 文档页数:5

下载文档原格式

  / 5
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

二代身份证读卡器二次开发说明

编写目的

为了在自行开发的项目中使用“新中新二代身份证读卡器”(以下简称读卡器)获得的二代身份证信息,需要对现有读卡器程序进行二次开发。

准备

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);