新中新二代身份证阅读器-有SDK

johnwanzhi 2011-08-30 03:47:42
哎。以前没跟硬件打过交道,今天老大突然抱着一台二代身份证阅读器丢给我,叫我写B/S的程序。要能读出身份证所有的信息。
我去网上查了一下。发现这种开源的程序几乎没有,很多都是没有SDK的。
老大把SDK给我了。有高手能教我写吗?实在没办法了,想了一个早上和一个下午都没思路。
ASP.NET的。SDK弄个链接吧。
SDK下载链接:http://good.gd/1553906.htm
型号是:新中新DKQ-116D
...全文
601 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
xxq860725 2011-12-17
  • 打赏
  • 举报
回复
LZ如何解决的呀? 有没有哪个老大推荐下什么牌子的读卡器提供的SDK适合开发用
我也是要用ASP.NET开发
集成到现有人事系统中
非常感谢了!!!
afrgefitx 2011-10-16
  • 打赏
  • 举报
回复
后来怎么解决的?
[Quote=引用 13 楼 johnwanzhi 的回复:]
现在的问题来了。我在本地可以读取出身份证的所有信息。
但是把程序发布到服务器后。就提示打开端口失败。。
是不是还要装什么插件啊
[/Quote]
johnwanzhi 2011-08-31
  • 打赏
  • 举报
回复
现在的问题来了。我在本地可以读取出身份证的所有信息。
但是把程序发布到服务器后。就提示打开端口失败。。
是不是还要装什么插件啊
johnwanzhi 2011-08-30
  • 打赏
  • 举报
回复
谢谢,学习了!
已经写好了。感谢!
老毕 2011-08-30
  • 打赏
  • 举报
回复
我把SDK的范例程序和说明书大致跑了一遍,不算难啊。那个示例程序里已经有了你需要的那些代码了。

Form1的开头,是涉及的身份证数据结构和API的导入

// 这是身份证阅读器读出的结构体封装
[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; // 照片路径
}

// 这后面是DLL提供的API接口导入和封装
/************************端口类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);
/*************************身份证卡类函数 ***************************/
[DllImport("SynIDCardAPI.dll", EntryPoint = "Syn_StartFindIDCard", CharSet = CharSet.Ansi)]
public static extern int Syn_StartFindIDCard(int iPort, ref byte pucIIN, int iIfOpen);
[DllImport("SynIDCardAPI.dll", EntryPoint = "Syn_SelectIDCard", CharSet = CharSet.Ansi)]
public static extern int Syn_SelectIDCard(int iPort, ref byte pucSN, int iIfOpen);
[DllImport("SynIDCardAPI.dll", EntryPoint = "Syn_ReadBaseMsg", 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("SynIDCardAPI.dll", EntryPoint = "Syn_ReadIINSNDN", CharSet = CharSet.Ansi)]
public static extern int Syn_ReadIINSNDN(int iPort, ref byte pucIINSNDN, int iIfOpen);
[DllImport("SynIDCardAPI.dll", EntryPoint = "Syn_ReadBaseMsgToFile", 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("SynIDCardAPI.dll", EntryPoint = "Syn_ReadIINSNDNToASCII", CharSet = CharSet.Ansi)]
public static extern int Syn_ReadIINSNDNToASCII(int iPort, ref byte pucIINSNDN, int iIfOpen);
[DllImport("SynIDCardAPI.dll", EntryPoint = "Syn_ReadNewAppMsg", CharSet = CharSet.Ansi)]
public static extern int Syn_ReadNewAppMsg(int iPort, ref byte pucAppMsg ,ref uint puiAppMsgLen , int iIfOpen);
[DllImport("SynIDCardAPI.dll", EntryPoint = "Syn_GetBmp", CharSet = CharSet.Ansi)]
public static extern int Syn_GetBmp(int iPort, ref byte Wlt_File);
[DllImport("SynIDCardAPI.dll", EntryPoint = "Syn_ReadMsg", CharSet = CharSet.Ansi)]
public static extern int Syn_ReadMsg(int iPortID, int iIfOpen, ref IDCardData pIDCardData);
[DllImport("SynIDCardAPI.dll", EntryPoint = "Syn_FindReader", CharSet = CharSet.Ansi)]
public static extern int Syn_FindReader();
/***********************设置附加功能函数 ************************/
[DllImport("SynIDCardAPI.dll", EntryPoint = "Syn_SetPhotoPath", CharSet = CharSet.Ansi)]
public static extern int Syn_SetPhotoPath(int iOption, ref byte cPhotoPath);
[DllImport("SynIDCardAPI.dll", EntryPoint = "Syn_SetPhotoType", CharSet = CharSet.Ansi)]
public static extern int Syn_SetPhotoType(int iType);
[DllImport("SynIDCardAPI.dll", EntryPoint = "Syn_SetPhotoName", CharSet = CharSet.Ansi)]
public static extern int Syn_SetPhotoName(int iType);
[DllImport("SynIDCardAPI.dll", EntryPoint = "Syn_SetSexType", CharSet = CharSet.Ansi)]
public static extern int Syn_SetSexType(int iType);
[DllImport("SynIDCardAPI.dll", EntryPoint = "Syn_SetNationType", CharSet = CharSet.Ansi)]
public static extern int Syn_SetNationType(int iType);
[DllImport("SynIDCardAPI.dll", EntryPoint = "Syn_SetBornType", CharSet = CharSet.Ansi)]
public static extern int Syn_SetBornType(int iType);
[DllImport("SynIDCardAPI.dll", EntryPoint = "Syn_SetUserLifeBType", CharSet = CharSet.Ansi)]
public static extern int Syn_SetUserLifeBType(int iType);
[DllImport("SynIDCardAPI.dll", EntryPoint = "Syn_SetUserLifeEType", CharSet = CharSet.Ansi)]
public static extern int Syn_SetUserLifeEType(int iType,int iOption);


你要做的,就是把这个示例程序的方案打开,把每个按钮的点击事件处理函数仔细看一遍,就知道要读取哪些信息,需要调用哪个API了。

下点功夫,真不难的
johnwanzhi 2011-08-30
  • 打赏
  • 举报
回复
SDK:测试程序 http://good.gd/1554103.htm
johnwanzhi 2011-08-30
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 abbey 的回复:]
说明书正在看,那颜色搭配看着眼睛疼,谢谢。
另,下载的只有说明书,没有SDK
[/Quote]
我把SDK也上传吧!
老毕 2011-08-30
  • 打赏
  • 举报
回复
说明书正在看,那颜色搭配看着眼睛疼,谢谢。
另,下载的只有说明书,没有SDK
johnwanzhi 2011-08-30
  • 打赏
  • 举报
回复
别只顾着下载说明书好吗?
帮忙解决下问题撒。
4楼,谢谢你的回复。但是,我是做C# .net的。不是javascript
子夜__ 2011-08-30
  • 打赏
  • 举报
回复
老毕 2011-08-30
  • 打赏
  • 举报
回复
谢谢,说明书下载了,不定哪天就能接到这样的活。
yue547283947 2011-08-30
  • 打赏
  • 举报
回复
我做过。。。。但具体型号都不知道。应该没多大区别吧。
function showvalues(txtIDCard, txtName, txtOPMaster) {
i = 0;
flag = 0;
for (i = 1; i < 3; i++) {
//if (document.getElementById("IDCardScanCtr").OpenComm(i) == 1) { flag = 1; break; }
if (IDCardScanCtr.OpenComm(i) == 1) { flag = 1; break; }
}
if (i == 3) {
// for(i=1001;i<1003;i++){
if (IDCardScanCtr.OpenComm(1001) == 1) {
flag = 1;
// alert(i);
// break;
} else {
alert("打开端口失败");

}
// }
}

if (flag == 1) {
if (IDCardScanCtr.Authen() == 1) {
if (IDCardScanCtr.ReadCardPath("", 1) == 1) {
document.getElementById(txtIDCard).value = IDCardScanCtr.sIDNo;
document.getElementById(txtName).value = IDCardScanCtr.sName;
document.getElementById(txtOPMaster).value = IDCardScanCtr.sAddress;
}
else {
alert("读卡错误!" + IDCardScanCtr.ReadCardPath("", 1));
}
}
else {
alert("找卡错误,请重新放卡!");
}
}
IDCardScanCtr.EndComm();


}


这是js代码
qq2013 2011-08-30
  • 打赏
  • 举报
回复
跟生产方联系下看下!

他们生产产品应该有有遇到过你这个问题!
johnwanzhi 2011-08-30
  • 打赏
  • 举报
回复
求解!!晚上我要弄完!!
ljsheng 2011-08-30
  • 打赏
  • 举报
回复
关注!!!!!

62,046

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧