新中新身份证读卡器接口精编I使用手册.docx

上传人:b****4 文档编号:4163112 上传时间:2022-11-28 格式:DOCX 页数:9 大小:17.25KB
下载 相关 举报
新中新身份证读卡器接口精编I使用手册.docx_第1页
第1页 / 共9页
新中新身份证读卡器接口精编I使用手册.docx_第2页
第2页 / 共9页
新中新身份证读卡器接口精编I使用手册.docx_第3页
第3页 / 共9页
新中新身份证读卡器接口精编I使用手册.docx_第4页
第4页 / 共9页
新中新身份证读卡器接口精编I使用手册.docx_第5页
第5页 / 共9页
点击查看更多>>
下载资源
资源描述

新中新身份证读卡器接口精编I使用手册.docx

《新中新身份证读卡器接口精编I使用手册.docx》由会员分享,可在线阅读,更多相关《新中新身份证读卡器接口精编I使用手册.docx(9页珍藏版)》请在冰豆网上搜索。

新中新身份证读卡器接口精编I使用手册.docx

新中新身份证读卡器接口精编I使用手册

RevisedbyLiuJingonJanuary12,2021

 

新中新身份证读卡器接口精编I使用手册

居民身份证验证读卡器接口

API使用手册

哈尔滨新中新电子股份有限公司

2004年12月

1.端口类API

intSyn_OpenPort(intiPortID);

说明:

打开串口/USB口

参数:

iPortID[in]整数,表示端口号。

1-16(十进制)为串口,1001-1016(十进制)为USB口,缺省的一个USB设备端口号是1001。

返回值:

成功返回0,错误返回见6。

intSyn_ClosePort(intiPortID);

说明:

关闭串口/USB口

参数:

iPortID[in]整数,表示端口号。

返回值:

成功返回0,错误返回见6。

intSyn_GetCOMBaud(intiComID,unsignedint*puiBaudRate);

说明:

查看串口的波特率

参数:

iPort[in]整数,表示端口号。

此处端口号必须为1-16,表示串口,参见7.1。

puiBaudRate[out]无符号整数指针,指向普通串口当前波特率,默认情况下为115200。

返回值:

成功返回0,错误返回见6。

intSyn_SetCOMBaud(intiComID,unsignedintuiCurrBaud,unsignedintuiSetBaud);

说明:

设置串口的波特率

参数:

iPort[in]整数,表示端口号。

此处端口号必须为1-16,表示串口。

uiCurrBaud[in]无符号整数,调用该API前已设置的业务终端与SAM_V通信的波特率(SAM_V出厂时默认,业务终端与SAM_V通信的波特率为115200)。

业务终端以该波特率与SAM_V通信,发出设置SAM_V新波特率的命令。

uiCurrBaud只能为下列数值之一:

115200,57600,38400,19200,9600.如果uiCurrBaud数值不是这些值之一,函数返回0x21;如果已设置的波特率与uiCurrBaud不一致,则函数返回非零,表示不能设置,调用API不成功。

uiSetBaud[in]符号整数,将要设置的SAM_V与业务终端通信波特率。

uiSetBaud只能取下列值之一:

115200,57600,38400,19200,9600,如果输入uiSetBaud参数不是这些数值之一,函数返回非零,设置不成功,保持原来的波特率不变。

返回值:

成功返回0,错误返回见6。

2.SAM类API

intSyn_GetSAMStatus(intiPortID,intiIfOpen);

说明:

对SAM_V进行状态检测

参数:

iPort[in]整数,表示端口号。

参见7.1。

iIfOpen[in]整数,参见7.2。

返回值:

成功返回0,错误返回见6。

intSyn_ResetSAM(intiPortID,intiIfOpen);

说明:

对SAM_V复位

参数:

iPort[in]整数,表示端口号。

参见7.1。

iIfOpen[in]整数,参见7.2。

返回值:

成功返回0,错误返回见6。

intSyn_GetSAMID(intiPortID,unsignedchar*pucSAMID,intiIfOpen);

说明:

读取SAM_V的编号(十六进制)

参数:

iPort[in]整数,表示端口号。

参见7.1。

pucSAMID[out]无符号字符串指针,SAM_V编号,16字节。

iIfOpen[in]整数,参见7.2。

返回值:

成功返回0,错误返回见6。

intSyn_GetSAMIDToStr(intiPortID,char*pcSAMID,intiIfOpen);

说明:

读取SAM_V的编号(字符串格式)

参数:

iPort[in]整数,表示端口号。

参见7.1。

pcSAMID[out]字符串指针,SAM_V编号。

iIfOpen[in]整数,参见7.2。

返回值:

成功返回0,错误返回见6。

3.身份证卡类API

intSyn_StartFindIDCard(intiPortID,unsignedchar*pucManaInfo,intiIfOpen);

说明:

开始找卡

参数:

iPort[in]整数,表示端口号。

参见7.1。

pucManaInfo[out]无符号字符指针,证/卡芯片管理号,4个字节。

iIfOpen[in]整数,参见7.2。

返回值:

成功返回0,错误返回见6。

intSyn_SelectIDCard(intiPortID,unsignedchar*pucManaMsg,intiIfOpen);

说明:

选卡

参数:

iPort[in]整数,表示端口号。

参见7.1。

pucManaMsg[out]无符号字符指针,证/卡芯片序列号,8个字节。

iIfOpen[in]整数,参见7.2。

返回值:

成功返回0,错误返回见6。

intSyn_ReadMsg(intiPortID,intiIfOpen,IDCardData*pIDCardData);

说明:

读取证/卡信息

参数:

iPort[in]整数,表示端口号。

参见7.1。

iIfOpen[in]整数,参见7.2。

pIDCardData[out]IDCardData类型读出的数据,参见5。

返回值:

成功返回0,错误返回见6。

4.附加类API

intSyn_SendSound(intiCmdNo);

说明:

发送语音

参数:

iCmdNo[in]声音编号

返回值:

成功返回0,错误返回见6。

voidSyn_DelPhotoFile();

说明:

删除临时照片文件

参数:

返回值:

成功返回0,错误返回见6。

5.结构体声明

typedefstructtagIDCardData{

charName[32];//姓名

charSex[4];//性别

charNation[6];//名族

charBorn[18];//出生日期

charAddress[72];//住址

charIDCardNo[38];//身份证号

charGrantDept[32];//发证机关

charUserLifeBegin[18];//有效开始日期

charUserLifeEnd[18];//有效截止日期

charreserved[38];//保留

charPhotoFileName[255];//照片路径

}IDCardData;

6.函数返回值

0操作成功或相片解码解码正确

-1端口打开失败/端口尚未打开/端口号不合法

-2证/卡中此项无内容

-3PC接收超时,在规定的时间内未接收到规定长度的数据

-4数据传输错误

-5该SAM_V串口不可用,只在SDT_GetCOMBaud时才有可能返回

-6接收业务终端数据的校验和错

-7接收业务终端数据的长度错

-8接收业务终端的命令错误,包括命令中的各种数值或逻辑搭配错误

-9越权操作

-10无法识别的错误

-11寻找证/卡失败

-12选取证/卡失败

-13调用sdtapi.dll错误

-14相片解码错误

-15授权文件不存在

-16设备连接错误

7.注意

7.1系统支持的串行端口号:

1-16,USB端口号:

1001-1016

7.2iIfOpen[in]整数,0表示不在该函数内部打开和关闭串口,此时确保之前调用了Syn_OpenPort来打开端口,并且在不需要与端口通信时,调用Syn_ClosePort关闭端口;非0表示在API函数内部包含了打开端口和关闭端口函数,之前不需要调用Syn_OpenPort,也不用再调用Syn_ClosePort。

7.3普通开发中只使用“端口类API”与“身份证卡类API”与“附加类API”就能满足开发需要,

使用方法见第10部分实例。

7.4在使用Syn_SendSound函数时请先用Syn_ClosePort函数关闭打开的端口。

7.5SDK包包含文件

Syn_IDCardRead.dll、Syn_IDCardRead.lib、Syn_IDCardRead.h、sdtapi.dll、WltRS.dll

8.声音命令暂时未定

1.读身份证成功

9.Syn_IDCardRead.h头文件:

#ifdef_WIN32

#defineSTDCALL__stdcall

#else

#defineSTDCALL

#endif

#ifndefSDTAPI_

#defineSDTAPI_

#ifdef__cplusplus

extern"C"{

#endif

#pragmapack

(1)

typedefstructtagIDCardData{

charName[32];

charSex[4];

charNation[6];

charBorn[18];

charAddress[72];

charIDCardNo[38];

charGrantDept[32];

charUserLifeBegin[18];

charUserLifeEnd[18];

charreserved[38];

charPhotoFileName[255];

}IDCardData;

#pragmapack()

/************************端口类API*************************/

intSTDCALLSyn_GetCOMBaud(intiComID,unsignedint*puiBaud);

intSTDCALLSyn_SetCOMBaud(intiComID,unsignedintuiCurrBaud,unsignedintuiSetBaud);

intSTDCALLSyn_OpenPort(intiPortID);

intSTDCALLSyn_ClosePort(intiPortID);

/************************SAM类API*************************/

intSTDCALLSyn_GetSAMStatus(intiPortID,intiIfOpen);

intSTDCALLSyn_ResetSAM(intiPortID,intiIfOpen);

intSTDCALLSyn_GetSAMID(intiPortID,unsignedchar*pucSAMID,intiIfOpen);

intSTDCALLSyn_GetSAMIDToStr(intiPortID,char*pcSAMID,intiIfOpen);

/********************身份证卡类API*************************/

intSTDCALLSyn_StartFindIDCard(intiPortID,unsignedchar*pucManaInfo,intiIfOpen);

intSTDCALLSyn_SelectIDCard(intiPortID,unsignedchar*pucManaMsg,intiIfOpen);

intSTDCALLSyn_ReadMsg(intiPortID,intiIfOpen,IDCardData*pIDCardData);

/********************附加类API*****************************/

intSTDCALLSyn_SendSound(intiCmdNo);

voidSTDCALLSyn_DelPhotoFile();

#ifdef__cplusplus

}

#endif

#endif

}

10.调用实例:

10.1vc6.0调试通过

voidCSampleDlg:

:

OnButton1()

{

//TODO:

Addyourcontrolnotificationhandlercodehere

intifOpen;

intiPort;

intiRet;

unsignedcharpucIIN[4];

unsignedcharpucSN[8];

IDCardDataCardMsg;

ifOpen=0;//是否需要打开串口

iPort=1;

iRet=Syn_OpenPort(iPort);

if(iRet==0)

{

iRet=Syn_StartFindIDCard(iPort,pucIIN,ifOpen);

if(iRet==0)

{

iRet=Syn_SelectIDCard(iPort,pucSN,ifOpen);

if(iRet==0)

{

iRet=Syn_ReadMsg(iPort,0,&CardMsg);

if(iRet==0)

{

//显示读出的信息

UpdateData(true);

m_name=CardMsg.Name;

UpdateData(false);

Syn_SendSound(0);

Syn_DelPhotoFile();

}

}

}

}

Syn_ClosePort(iPort);

}

10.2delphi7.0调试通过

首先将Syn_IDCardRead.h翻译为Delphi格式。

procedureTForm1.Button4Click(Sender:

TObject);

var

ifOpen:

integer;

iPort:

integer;

iRet:

integer;

pucIIN:

array[0..3]ofByte;

pucSN:

array[0..7]ofByte;

CardMsg:

TCard;

begin

IfOpen:

=0;//是否需要打开串口

iPort:

=1;

iRet:

=Syn_OpenPort(iPort);

ifiRet<>0then

begin

Syn_ClosePort(iPort);

Exit;

end;

iRet:

=Syn_StartFindIDCard(iPort,@pucIIN,IfOpen);

ifiRet=0then

begin

iRet:

=Syn_SelectIDCard(iPort,@pucSN,IfOpen);

ifiRet=0then

begin

iRet:

=Syn_ReadMsg(iPort,0,CardMsg);

ifiRet=0then

begin

label1.Caption:

=trim(CardMsg.Name);

label2.Caption:

=trim(CardMsg.Sex);

label3.Caption:

=trim(CardMsg.Nation);

label4.Caption:

=trim(CardMsg.Born);

label5.Caption:

=trim(CardMsg.Address);

label6.Caption:

=trim(CardMsg.IDCardNo);

label7.Caption:

=trim(CardMsg.GrantDept);

label8.Caption:

=trim(CardMsg.UserLifeBegin);

label9.Caption:

=trim(CardMsg.UserLifeEnd);

label10.Caption:

=trim(CardMsg.reserved);

:

=True;

:

=

Syn_SendSound(0);

Syn_DelPhotoFile;

end;

end;

end;

Syn_ClosePort(iPort);

end;

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 考试认证 > 交规考试

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1