神思二代身份证验证机具按 公安部一所 标准
与人口信息系统软件对接操作的实现
一、 软件调用接口(SDK开发包)
1. SDK开发包包括:
i. Termb.dll --------公安部标准接口动态连接库
ii. Termb.lib --------VC开发时库函数定义文件
iii. Sdtapi.dll --------与神思验证机具通讯支持动态连接库
iv. WltRS.dll --------神思验证机具身份证照片图像解压算法支持动态连接2. 调用调试
用户自主开发程序来实现从神思“二代身份证验证机具”读取身份证信息时需要应用SDK开发包,仅仅需要调用Termb.dll中的四个函数即可。但是开发包内的3个动态连接库文件必须放在同一个文件夹下,且最好安装在用户程序所在的文件夹下。
Termb.dll动态连接库包含四个函数:InitComm,CloseComm,Authenticate,Read_Content。使用方法详见“神思Termb动态库使用说明”文档。二、 使用时安装方法
软件开发好后,在安装神思公司的验证机具时,软件方面操作:
1. 将Termb.lic拷贝到“C:\” 根目录下,并去掉文件的“只读”属性,。
2. 将Termb.dll,Sdtapi.dll,WltRS.dll拷贝到人口信息系统软件程序的安装文件夹下。
3. 到此可以连接好神思验证机具,启动软件进行读卡。
1. 初始化端口
Delphi:
Function InitComm(iPort:integer):integer; stdcall;far; External 'termb.dll';
VC++
int InitComm(int iPort);
说明:
iPort :串口号,取值 1~16
USB口 取值 1001~1016
返回值:1 成功
其他 失败
2. 关闭端口
Delphi:
Function CloseComm:integer; stdcall;far; External 'termb.dll';
VC++
int CloseComm (void);
说明:
返回值:1 成功
其他 失败3. 卡认证
Delphi:
Function Authenticate:integer; stdcall;far; External 'termb.dll';
VC++
int Authenticate (void);
说明:
返回值:1 成功
其他 失败4. 读卡内信息
Delphi:
Function Delphi:
Function Read_Content(Act:integer):integer; stdcall;far; External 'termb.dll';
VC++
int Read_Content (Act:integer):integer; stdcall;far; External 'termb.dll';
说明:
Act :读取的信息类型:
//1 : 读基本信息
生成wz.txt身份信息文本文件unicode编码
生成zp.bmp图像文件
-1 相片解码错误
-2 wlt文件后缀错误
-3 wlt文件打开错误
-4 wlt文件格式错误
-5 软件未授权
-6 设备连接错误
-8 文件存储失败
-10 端口操作失败
-11 解码失败
2 接收数据超时 //2 : 只读文字信息
生成wz.txt身份信息文本文件unicode编码
//3 : 读最新住址信息
生成NewAdd.txt文件
返回值:1 成功
其他 失败文字信息采用GB 13000的UCS-2进行存储,各项目分配如下:
项目 长度(字节) 说明
姓名 30 汉字
性别 2 代码
民族 4 代码
出生 16 年月日:YYYYMMDD
住址 70 汉字和数字
公民身份号码 36 数字
签发机关 30 汉字
有效期起始日期 16 年月日:YYYYMMDD
有效期截止日期 16 年月日:YYYYMMDD
有效期为长期时存储“长期”
最新住址 70(每个住址70字节,最多4块,即280字节) 汉字和数字
错误信息详细见下表
类 别 返回值
(16进制) 意 义
与ID卡相关 80 找卡不成功
81 选卡不成功
31 卡认证机具失败
32 机具认证卡失败
33 信息验证错误
34 尚未找卡,不能进行对卡的操作
40 无法识别的卡类型
41 读卡操作失败
50 写卡操作失败
61 用户登录失败
注意:1.端口初始化后,再退出程序时必须关闭端口。
2.要读取卡内信息,必须先认证卡,成功后才能够读取。
SDK包说明如上,可是用ASP.NET c#如何实现读取身份证信息和图片啊
~~~~~~~~~~~
求个例子 C#~~~~~~~~~~~~
与人口信息系统软件对接操作的实现
一、 软件调用接口(SDK开发包)
1. SDK开发包包括:
i. Termb.dll --------公安部标准接口动态连接库
ii. Termb.lib --------VC开发时库函数定义文件
iii. Sdtapi.dll --------与神思验证机具通讯支持动态连接库
iv. WltRS.dll --------神思验证机具身份证照片图像解压算法支持动态连接2. 调用调试
用户自主开发程序来实现从神思“二代身份证验证机具”读取身份证信息时需要应用SDK开发包,仅仅需要调用Termb.dll中的四个函数即可。但是开发包内的3个动态连接库文件必须放在同一个文件夹下,且最好安装在用户程序所在的文件夹下。
Termb.dll动态连接库包含四个函数:InitComm,CloseComm,Authenticate,Read_Content。使用方法详见“神思Termb动态库使用说明”文档。二、 使用时安装方法
软件开发好后,在安装神思公司的验证机具时,软件方面操作:
1. 将Termb.lic拷贝到“C:\” 根目录下,并去掉文件的“只读”属性,。
2. 将Termb.dll,Sdtapi.dll,WltRS.dll拷贝到人口信息系统软件程序的安装文件夹下。
3. 到此可以连接好神思验证机具,启动软件进行读卡。
1. 初始化端口
Delphi:
Function InitComm(iPort:integer):integer; stdcall;far; External 'termb.dll';
VC++
int InitComm(int iPort);
说明:
iPort :串口号,取值 1~16
USB口 取值 1001~1016
返回值:1 成功
其他 失败
2. 关闭端口
Delphi:
Function CloseComm:integer; stdcall;far; External 'termb.dll';
VC++
int CloseComm (void);
说明:
返回值:1 成功
其他 失败3. 卡认证
Delphi:
Function Authenticate:integer; stdcall;far; External 'termb.dll';
VC++
int Authenticate (void);
说明:
返回值:1 成功
其他 失败4. 读卡内信息
Delphi:
Function Delphi:
Function Read_Content(Act:integer):integer; stdcall;far; External 'termb.dll';
VC++
int Read_Content (Act:integer):integer; stdcall;far; External 'termb.dll';
说明:
Act :读取的信息类型:
//1 : 读基本信息
生成wz.txt身份信息文本文件unicode编码
生成zp.bmp图像文件
-1 相片解码错误
-2 wlt文件后缀错误
-3 wlt文件打开错误
-4 wlt文件格式错误
-5 软件未授权
-6 设备连接错误
-8 文件存储失败
-10 端口操作失败
-11 解码失败
2 接收数据超时 //2 : 只读文字信息
生成wz.txt身份信息文本文件unicode编码
//3 : 读最新住址信息
生成NewAdd.txt文件
返回值:1 成功
其他 失败文字信息采用GB 13000的UCS-2进行存储,各项目分配如下:
项目 长度(字节) 说明
姓名 30 汉字
性别 2 代码
民族 4 代码
出生 16 年月日:YYYYMMDD
住址 70 汉字和数字
公民身份号码 36 数字
签发机关 30 汉字
有效期起始日期 16 年月日:YYYYMMDD
有效期截止日期 16 年月日:YYYYMMDD
有效期为长期时存储“长期”
最新住址 70(每个住址70字节,最多4块,即280字节) 汉字和数字
错误信息详细见下表
类 别 返回值
(16进制) 意 义
与ID卡相关 80 找卡不成功
81 选卡不成功
31 卡认证机具失败
32 机具认证卡失败
33 信息验证错误
34 尚未找卡,不能进行对卡的操作
40 无法识别的卡类型
41 读卡操作失败
50 写卡操作失败
61 用户登录失败
注意:1.端口初始化后,再退出程序时必须关闭端口。
2.要读取卡内信息,必须先认证卡,成功后才能够读取。
SDK包说明如上,可是用ASP.NET c#如何实现读取身份证信息和图片啊
~~~~~~~~~~~
求个例子 C#~~~~~~~~~~~~
解决方案 »
- 我自己按照网上的方法写的一个小分页程序,感觉好麻烦,大家晒晒自己的方法。。。
- 请问如何在全局类里加上代码可以控制该网站的所有网页在同一个IP同时在一段时间内不能被刷新多少次以上
- 请问有什么好的工具,可以用数据库生成代码?
- 求朋友一起合作发展(安徽合肥地区最好!)
- 关于框架页安全性问题,急急急!100分以表诚意
- 想跟大家探讨一个比较麻烦的问题!
- ASP.NET中如何在客户端调用服务器端代码?
- Response.Redirect如何获得来源页?????
- 做.net开发,是装2003好,还是2000好?如果从2000到2003会出现什么问题?
- 如何从客户端控制treeview的selectIndex事件???
- 求一个把vs2008的项目转化到2005的项目工具
- 都说Cookie不安全,我用临时Cookie,也有人说不安全。到底怎么不安全了呢?谢谢。
首先是引用: [DllImport("termb.dll")]
public static extern int InitComm(int Port); [DllImport("termb.dll")]
public static extern int CloseComm(); [DllImport("termb.dll")]
public static extern int Authenticate(); [DllImport("termb.dll")]
public static extern int Read_Content(int Aetive); [DllImport("termb.dll")]
public static extern int GetPeopleName(byte[] strTmp, int strLen); [DllImport("termb.dll")]
public static extern int GetPeopleSex(byte[] strTmp, int strLen);身份证读卡器的读卡流程都是规定死的:
1、连接读卡器具就可能各个厂家不同的。
iRet = C_GTICR100.InitComm(Port);
2、读取身份证: public static bool AuthenticateCard()
{
int iRet;
CleanErrMsg(); iRet = C_GTICR100.Authenticate();
if (iRet == 1)
return true;
else
{
SetErrMsg("未放卡或卡放置不正确!如果已经正确放置,请先把卡拿开,然后再重新正确放置卡!");
return false;
}
} public static bool ReadCard(int Active)
{
int iRet;
CleanErrMsg(); iRet = C_GTICR100.Read_Content(Active);
if (iRet == 1)
return true;
else
{
switch (iRet)
{
case 0:
SetErrMsg("读卡错误!请拿走卡然后重新放置!");
break;
case -1:
SetErrMsg("相片解码错误!");
break;
case -2:
SetErrMsg("wlt文件后缀错误!");
break;
case -3:
SetErrMsg("wlt文件打开错误!");
break;
case -4:
SetErrMsg("wlt文件格式错误!");
break;
case -5:
SetErrMsg("软件未授权!");
break;
case -6:
SetErrMsg("设备连接失败!");
break;
case -8:
SetErrMsg("未能验证卡,请确认已经正确放置卡!");
break;
} return false;
}
}这两个函数是必须的每次读身份证都要先验证和读。
3、提取身份证信息: public static bool GetName(out byte[] NameBytes)
{
int iRet;
CleanErrMsg(); byte[] iRetBytes = new byte[30];
iRet = C_GTICR100.GetPeopleName(iRetBytes, 30);
if (iRet == 0)
{
SetErrMsg("读取姓名信息异常!");
NameBytes = null;
return false;
}
else
{
NameBytes = iRetBytes;
} return true;
} public static string GetName_Str()
{
string iRet = ""; byte[] iRetBytes;
if (GetName(out iRetBytes) == true)
{
Encoding iStrEncod = Encoding.GetEncoding("gb2312");
iRet = iStrEncod.GetString(iRetBytes);
} return iRet;
}
整个流程就这样,神思也应该是这样的··
这里有问题,只有1个参数,这个参数是读取的信息类型的数字
读卡内信息的返回值 也是数字所以公安的这个DLL是不能读取身份证的具体信息的!
termb.dll,绝对可以不用它,就能读出身份证信息!要读身份证还是 调用 sdtapi.dll
貌似只需要7个函数,如下
SDT_ReadNewAppMsg
SDT_ReadBaseMsg
SDT_ReadMngInfo
SDT_StartFindIDCard
SDT_SelectIDCard
SDT_ClosePort
SDT_OpenPort我也正在研究中!
公安的哪个也行的,会在程序的目录下生成wz.txt
然后处理这个 TXT吧