新中新SDK讀卡器開發(fā)包開發(fā)函數(shù)說(shuō)明
廣州萬(wàn)特信息科技有限公司提供新中新SDK二代證讀卡器開發(fā)包開發(fā)函數(shù)說(shuō)明,更多開發(fā)包索取或資料下載,歡迎聯(lián)系我們。
一、新中新SDK讀卡器開發(fā)包開發(fā)函數(shù)系統(tǒng)的基本要求
a) Windows 98,Windows 2000 Pro,Windows 2000 Server,WinXP,Windows Vista,Windows7
b) 至少32兆內(nèi)存(32M RAM or Larger)
c) 至少10兆空閑硬盤空間(10M Free Hard Disk Space or Larger)
d) 至少一個(gè)空閑普通串口或USB口(視用戶需求而定)。
二、新中新SDK讀卡器開發(fā)包開發(fā)函數(shù)說(shuō)明
(一)端口類API:
Syn_SetMaxRFByte 設(shè)置射頻適配器最大通信字節(jié)數(shù)
int Syn_SetMaxRFByte (
int iPort,
unsigned char ucByte,
int bIfOpen
);
參數(shù)說(shuō)明:
iPort
[in] 整數(shù),表示端口號(hào)。串口0001至0016,USB1001至1016
ucByte
[in] 無(wú)符號(hào)字符,24-255,表示射頻適配器最大通信字節(jié)數(shù)。
iIfOpen
[in] 整數(shù),非0表示在API函數(shù)內(nèi)部包含了打開端口和關(guān)閉端口函數(shù),0表示在API函數(shù)內(nèi)部不包含了打開端口和關(guān)閉端口函數(shù)
返回值:
0 成功
其他 失?。ň唧w含義參見返回碼表)
Syn_GetCOMBaud 查看串口當(dāng)前波特率(該函數(shù)只用于SAM采用RS232串口的情形,如果采用USB接口則不支持該API)。
int Syn_GetCOMBaud (
int iPort,
unsigned int * puiBaudRate
);
參數(shù)說(shuō)明:
iPort
[in] 整數(shù),表示端口號(hào)。此處端口號(hào)必須為1-16,表示串口
puiBaudRate
[out] 無(wú)符號(hào)整數(shù)指針,指向普通串口當(dāng)前波特率, 默認(rèn)情況下為115200。
返回值:
0 成功
0X01 端口打開失敗/端口號(hào)不合法
0X05 無(wú)法獲得該SAM的波特率,該SAM串口不可用。
Syn_GetCOMBaudEx 查看串口當(dāng)前波特率(該函數(shù)只用于SAM采用RS232串口的情形,如果采用USB接口則不支持該API)。
int Syn_GetCOMBaudEx (
int iPort,
);
參數(shù)說(shuō)明:
iPort
[in] 整數(shù),表示端口號(hào)。此處端口號(hào)必須為1-16,表示串口
返回值:
0 失敗 其他為讀卡器當(dāng)前波特率
Syn_SetCOMBaud 設(shè)置SAM的串口的波特率(該函數(shù)只用于SAM采用RS232串口的情形,如果采用USB接口則不支持該API),設(shè)置成功后,在該SAM和主機(jī)注冊(cè)表中都記錄設(shè)置后的波特率,保證在SAM重新啟動(dòng)和該套API被重新調(diào)用時(shí)采用設(shè)置后的波特率。該函數(shù)調(diào)用成功后,需要延時(shí)5毫秒,然后才能繼續(xù)與SAM通信。
int Syn_SetCOMBaud (
int iPort,
unsigned int uiCurrBaud,
unsigned int uiSetBaud
);
參數(shù)說(shuō)明:
iPort
[in] 整數(shù),表示端口號(hào)。此處端口號(hào)必須為1-16,表示串口。
uiCurrBaud
[in] 無(wú)符號(hào)整數(shù),調(diào)用該API前已設(shè)置的業(yè)務(wù)終端與SAM通信的波特率(SAM出廠時(shí)默認(rèn),業(yè)務(wù)終端與SAM通信的波特率為115200).業(yè)務(wù)終端以該波特率與SAM通信,發(fā)出設(shè)置SAM新波特率的命令.。uiCurrBaud只能為下列數(shù)值之一:115200,57600,38400,19200,9600.如果uiCurrBaud數(shù)值不是這些值之一,函數(shù)返回0X21;如果已設(shè)置的波特率與uiCurrBaud不一致, 則函數(shù)返回0X02,表示不能設(shè)置,調(diào)用API不成功。
uiSetBaud
[in] 無(wú)符號(hào)整數(shù),將要設(shè)置的SAM與業(yè)務(wù)終端通信波特率。uiSetBaud只能取下列值之一::115200,57600,38400,19200,9600,如果輸入uiSetBaud參數(shù)不是這些數(shù)值之一,,函數(shù)返回0X21,設(shè)置不成功,保持原來(lái)的波特率不變。
返回值:
0 成功
0X01 端口打開失敗/端口號(hào)不合法。
0X02 超時(shí),設(shè)置不成功。
0X21 uiCurrBaud 、uiSetBaud輸入?yún)?shù)數(shù)值錯(cuò)誤。
Syn_OpenPort 打開端口
int Syn_OpenPort(
int iPort
);
參數(shù)說(shuō)明:
iPort
[in] 整數(shù),表示端口號(hào)。1-16(十進(jìn)制)為串口,1001-1016(十進(jìn)制)為USB口,USB的端口設(shè)置參看“USB設(shè)備配置使用手冊(cè)”。
返回值:
0 打開端口成功
0X01 打開端口失敗/端口號(hào)不合法
Syn_ClosePort 關(guān)閉端口
int Syn_ClosePort (
int iPort
);
參數(shù)說(shuō)明:
iPort
[in] 整數(shù),表示端口號(hào)。
返回值:
0 關(guān)閉端口成功。
0x01 端口號(hào)不合法
(二)SAM類API:
Syn_ResetSAM對(duì)SAM復(fù)位
int Syn_ResetSAM (
int iPort,
int iIfOpen
);
參數(shù)說(shuō)明:
iPort
[in] 整數(shù),表示端口號(hào)。根據(jù)SAM使用的接口不同(分為普通串口SAM和USB口SAM),分別使用不同的端口號(hào)(目前串口和USB都只支持16個(gè),即串口0001-0016和USB1001-1016):
普通串口SAM
0001 – 0016(十進(jìn)制)
例如:
0001:串口1(COM1)
0002:串口2(COM2)
USB口SAM
1001 – 1016(十進(jìn)制)
例如:
1001:USB1
1002:USB2
iIfOpen
[in] 整數(shù),0表示不在該函數(shù)內(nèi)部打開和關(guān)閉串口,此時(shí)確保之前調(diào)用了Syn_OpenPort來(lái)打開端口,并且在不需要與端口通信時(shí),調(diào)用Syn_ClosePort關(guān)閉端口;非0表示在API函數(shù)內(nèi)部包含了打開端口和關(guān)閉端口函數(shù),之前不需要調(diào)用Syn_OpenPort,也不用再調(diào)用Syn_ClosePort。
返回值:
0 成功
其他 失?。ň唧w含義參見返回碼表)
Syn_GetSAMStatus 對(duì)SAM進(jìn)行狀態(tài)檢測(cè)。
int Syn_GetSAMStatus (
int iPort,
int iIfOpen
);
參數(shù)說(shuō)明:
iPort
[in] 整數(shù),表示端口號(hào)。參見Syn_ResetSAM。
iIfOpen
[in] 整數(shù),參見Syn_ResetSAM。
返回值:
0 SAM正常
0x60 自檢失敗,不能接收命令
其他 命令失?。ň唧w含義參見返回碼表)
Syn_GetSAMID 讀取SAM的編號(hào)。
int Syn_GetSAMID (
int iPort,
unsigned char * pucSAMID,
int iIfOpen
);
參數(shù)說(shuō)明:
iPort
[in] 整數(shù),表示端口號(hào)。參見Syn_ResetSAM。
pucSAMID
[out] 無(wú)符號(hào)字符串指針,指向讀到的SAM編號(hào), 16字節(jié)。
返回值:
0 成功
其他 失?。ň唧w含義參見返回碼表)
Syn_GetSAMIDToStr 讀取SAM的編號(hào)。
int Syn_GetSAMIDToStr (
int iPort,
char * pcSAMID,
int iIfOpen
);
參數(shù)說(shuō)明:
iPort
[in] 整數(shù),表示端口號(hào)。參見Syn_ResetSAM。
pcSAMID
[out] 字符串指針,指向讀到的SAM編號(hào)。
iIfOpen
[in] 整數(shù),參見Syn_ResetSAM。
返回值:
0 成功
其他 失?。ň唧w含義參見返回碼表)
Syn_FindReader 自動(dòng)尋找讀卡器。
int Syn_FindReader ();
返回值:
0 未找到
其他 1~16串口 1001~1016USB
(三)身份證卡類API:
Syn_StartFindIDCard 開始找卡。
int Syn_StartFindIDCard (
int iPort ,
unsigned char * pucIIN,
int iIfOpen
);
參數(shù)說(shuō)明:
iPort
[in] 整數(shù),表示端口號(hào)。參見Syn_ResetSAM。
pucIIN
[out] 無(wú)符號(hào)字符指針,指向讀到的IIN。
iIfOpen
[in] 整數(shù),參見Syn_ResetSAM。
返回值:
0 找卡成功
0x80 找卡失敗
Syn_SelectIDCard 選卡。
int Syn_ SelectIDCard (
int iPort ,
unsigned char * pucSN,
int iIfOpen
);
參數(shù)說(shuō)明:
iPort
[in] 整數(shù),表示端口號(hào)。參見Syn_ResetSAM。
pucSN
[out] 無(wú)符號(hào)字符指針,指向讀到的SN。
iIfOpen
[in] 整數(shù),參見Syn_ResetSAM。
返回值:
0 選卡成功
0x81 選卡失敗
Syn_ReadBaseMsg 讀取ID卡內(nèi)基本信息區(qū)域信息。
int Syn_ReadBaseMsg (
int iPort,
unsigned char *pucCHMsg,
unsigned int * puiCHMsgLen,
unsigned char *pucPHMsg,
unsigned int * puiPHMsgLen,
int iIfOpen
);
參數(shù)說(shuō)明:
iPort
[in] 整數(shù),表示端口號(hào)。參見Syn_ResetSAM。
pucCHMsg
[out] 無(wú)符號(hào)字符指針,指向讀到的文字信息。
puiCHMsgLen
[out] 無(wú)符號(hào)整型數(shù)指針,指向讀到的文字信息長(zhǎng)度。
pucPHMsg
[out] 無(wú)符號(hào)字符指針,指向讀到的照片信息。
puiPHMsgLen
[out] 無(wú)符號(hào)整型數(shù)指針,指向讀到的照片信息長(zhǎng)度。
iIfOpen
[in] 整數(shù),參見Syn_ResetSAM。
返回值:
0 讀基本信息成功
其他 讀基本信息失?。ň唧w含義參見返回碼表)
Syn_ReadIINSNDN 讀取ID卡內(nèi)IIN,SN和DN。
int Syn_ReadIINSNDN (
int iPort,
unsigned char *pucIINSNDN,
int iIfOpen
);
參數(shù)說(shuō)明:
iPort
[in] 整數(shù),表示端口號(hào)。參見Syn_ResetSAM。
pucIINSNDN
[out] 無(wú)符號(hào)字符指針,指向讀到的IIN,SN和DN,長(zhǎng)度為固定28字節(jié)。
iIfOpen
[in] 整數(shù),參見Syn_ResetSAM。
返回值:
0 讀IIN,SN和DN成功
其他 讀IIN,SN和DN失敗(具體含義參見返回碼表)
Syn_ReadBaseMsgToFile 與Syn_ ReadBaseMsg函數(shù)類似,讀取ID卡內(nèi)基本信息區(qū)域信息,并將讀到的基本信息寫進(jìn)輸入?yún)?shù)所指定的文件中。
int Syn_ ReadBaseMsgToFile (
int iPortID,
char * pcCHMsgFileName,
unsigned int * puiCHMsgFileLen,
char * pcPHMsgFileName,
unsigned int * puiPHMsgFileLen,
int iIfOpen
);
參數(shù)說(shuō)明:
iPort
[in] 整數(shù),表示端口號(hào)。參見Syn_ResetSAM。
pcCHMsgFileName
[in] 讀取到的ID卡內(nèi)文字信息,需要寫入文件,此為由用戶指定的文件名。
puiCHMsgFileLen
[out] 存儲(chǔ)文字信息的文件的長(zhǎng)度。
pcCHMsgFileName
[in] 讀取到的ID卡內(nèi)照片信息,需要寫入文件,此為由用戶指定的文件名。
puiCHMsgFileLen
[out] 存儲(chǔ)照片信息的文件的長(zhǎng)度。
iIfOpen
[in] 整數(shù),參見Syn_ResetSAM。
返回值:
0 讀基本信息成功
其他 讀基本信息失敗(具體含義參見返回碼表)
Syn_ReadIINSNDNToASCII 讀取ID卡內(nèi)IIN,SN和DN,并把16進(jìn)制轉(zhuǎn)化成ASCII形式。
int Syn_ReadIINSNDNToASCII (
int iPort,
unsigned char *pucIINSNDN,
int iIfOpen
);
參數(shù)說(shuō)明:
iPort
[in] 整數(shù),表示端口號(hào)。參見Syn_ResetSAM。
pucIINSNDN
[out] 無(wú)符號(hào)字符指針,指向讀到的IIN,SN和DN,長(zhǎng)度為固定56字節(jié)。
iIfOpen
[in] 整數(shù),參見Syn_ResetSAM。
返回值:
0 讀SN和DN成功
其他 讀SN和DN失敗(具體含義參見返回碼表)
舉例說(shuō)明:
如讀取到的IIN,SN和DN十六進(jìn)制是{0x12, 0x9a…},把每個(gè)字節(jié)拆分成兩個(gè)ASCII形式的數(shù),轉(zhuǎn)化成后則為{0x31,0x32,0x39,0x61…}。
Syn_GetBmp本函數(shù)用于將wlt文件解碼成bmp文件。
int Syn_GetBmp(
char * Wlt_File,
int intf
);
參數(shù)說(shuō)明:
Wlt_File
[in] 字符指針。wlt文件名
intf
[in] 閱讀設(shè)備通訊接口類型(1—RS-232C,2—USB)
返回值:
值
意義
1
相片解碼解碼正確
0
調(diào)用sdtapi.dll錯(cuò)誤
-1
相片解碼錯(cuò)誤
-2
wlt文件后綴錯(cuò)誤
-3
wlt文件打開錯(cuò)誤
-4
wlt文件格式錯(cuò)誤
-5
軟件未授權(quán)
-6
設(shè)備連接錯(cuò)誤
(四)其他設(shè)置類API
Syn_SetPhotoPath 本函數(shù)用于設(shè)置照片文件存儲(chǔ)的路徑
int Syn_SetPhotoPath(
int iOption
char * cPhotopath
);
參數(shù)說(shuō)明:
iOption
[in] 整形,0=C:根目錄, 1=當(dāng)前路徑 ,2=指定路徑
cPhotoPath
[in] 字符指針。路徑名
返回值:
0 成功
-1 不成功
Syn_SetPhotoType 本函數(shù)用于設(shè)置照片文件存儲(chǔ)的格式
int Syn_SetPhotoType(
int iType
);
參數(shù)說(shuō)明:
iType
[in] 整形。1=bmp , 2=jpeg ,3=base64
返回值:
0 成功
-1 不成功
Syn_SetPhotoName 本函數(shù)用于設(shè)置照片文件的文件名
int Syn_SetPhotoName(
int iType
);
參數(shù)說(shuō)明:
iType
[in] 整形。0=tmp , 1=姓名 ,2=身份證號(hào) ,3=姓名_身份證號(hào)
返回值:
0 成功
-1 不成功
Syn_SetSexType 本函數(shù)用于設(shè)置返回性別的格式
int Syn_SetSexType(
int iType
);
參數(shù)說(shuō)明:
iType
[in] 整形。0=卡內(nèi)存儲(chǔ)的數(shù)據(jù), 1=解釋之后的數(shù)據(jù)
返回值:
0 成功
-1 不成功
Syn_SetNationType 本函數(shù)用于設(shè)置返回民族的格式
int Syn_SetNationType(
int iType
);
參數(shù)說(shuō)明:
iType
[in] 整形。0=卡內(nèi)存儲(chǔ)的數(shù)據(jù) , 1=解釋之后的數(shù)據(jù) ,2=解釋之后+“族”
返回值:
0 成功
-1 不成功
Syn_SetBornType 本函數(shù)用于設(shè)置返回出生日期的格式
int Syn_SetBornType(
int iType
);
參數(shù)說(shuō)明:
iType
[in] 整形。 0=YYYYMMDD,1=YYYY年MM月DD日,2=YYYY.MM.DD,
3=YYYY-MM-DD,4=YYYY/MM/DD
返回值:
0 成功
-1 不成功
Syn_SetUserLifeBType 本函數(shù)用于設(shè)置返回有效期開始日期的格式
int Syn_SetUserLifeBType(
int iType
);
參數(shù)說(shuō)明:
iType
[in] 整形。 0=YYYYMMDD,1=YYYY年MM月DD日,2=YYYY.MM.DD,
3=YYYY-MM-DD,4=YYYY/MM/DD
返回值:
0 成功
-1 不成功
Syn_SetUserLifeEType 本函數(shù)用于設(shè)置返回有效期結(jié)束日期的格式
int Syn_SetUserLifeEType(
int iType;int iOption
);
參數(shù)說(shuō)明:
iType
[in] 整形。 0=YYYYMMDD,1=YYYY年MM月DD日,2=YYYY.MM.DD,
3=YYYY-MM-DD,4=YYYY/MM/DD
iOption
[in] 整形。 0=長(zhǎng)期不轉(zhuǎn)換 1=長(zhǎng)期轉(zhuǎn)換為 有效期開始加50年
返回值:
0 成功
-1 不成功
三、新中新SDK讀卡器開發(fā)包開發(fā)函數(shù)OCX接口說(shuō)明
屬性
NameA 該屬性返回讀取信息的姓名,返回?cái)?shù)據(jù)類型為BSTR
Sex 該屬性返回讀取信息的性別,返回?cái)?shù)據(jù)類型為BSTR
Nation 該屬性返回讀取信息的民族,返回?cái)?shù)據(jù)類型為BSTR
Born 該屬性返回讀取信息的出生日期,返回?cái)?shù)據(jù)類型為BSTR
Address 該屬性返回讀取信息的地址,返回?cái)?shù)據(jù)類型為BSTR
CardNo 該屬性返回讀取信息的身份證號(hào),返回?cái)?shù)據(jù)類型為BSTR
Police 該屬性返回讀取信息的發(fā)證機(jī)關(guān),返回?cái)?shù)據(jù)類型為BSTR
UserLifeB 該屬性返回讀取信息的有效期開始,返回?cái)?shù)據(jù)類型為BSTR
UserLifeE 該屬性返回讀取信息的有效期結(jié)束,返回?cái)?shù)據(jù)類型為BSTR
PhotoName; 該屬性返回讀取信息的照片文件名,返回?cái)?shù)據(jù)類型為BSTR
Base64Photo 該屬性返回讀取信息的Base64照片編碼,僅在用SetPhotoType方法設(shè)置存儲(chǔ)文件為Base64格式之后有效返回?cái)?shù)據(jù)類型為BSTR
方法
SetPhotoPath 本方法用于設(shè)置存儲(chǔ)照片的路徑,參見Syn_SetPhotoPath。
參數(shù)說(shuō)明:
[in] iType 整形
cPath 字符串,BSTR
SetPhotoType 本方法用于設(shè)置存儲(chǔ)照片的格式,參見Syn_SetPhotoType
SetPhotoName 本方法用于設(shè)置存儲(chǔ)照片的文件名,參見Syn_SetPhotoName
SetSexType 本方法用于設(shè)置返回性別的格式,參見Syn_SetSexType
SetNationType 本方法用于設(shè)置返回民族的格式,參見Syn_SetNationType
SetBornType 本方法用于設(shè)置返回出生日期的格式,參見Syn_SetBornType
SetUserLifeBType 本方法用于設(shè)置返回有效期開始的格式,參見Syn_SetUserLifeBType
SetUserLifeEType 本方法用于設(shè)置返回有效期結(jié)束的格式,參見Syn_SetUserLifeEType
FindReader 本方法可以自動(dòng)尋找計(jì)算機(jī)連接的讀卡器,參見Syn_FindReader
GetSAMID 本方法返回讀卡器的ID號(hào),返回類型為BSTR,僅在FinderReader返回值大于0才有效
SetReadType 設(shè)置讀卡的方式,0為手動(dòng) 1為自動(dòng)
ReadCardMsg 手動(dòng)讀卡函數(shù),返回0為成功,成功后通過(guò)屬性得到信息
SetLoopTime 自動(dòng)讀卡方式下循環(huán)讀卡間隔,至少要大于1000毫秒
參數(shù)說(shuō)明:
[in] iLoopTime 整形
事件
CardIn 該事件在自動(dòng)讀卡方式下讀卡成功時(shí)出發(fā),State=1有效
參數(shù)說(shuō)明:
[in] State 整形
控件的使用方法:
1) 設(shè)置參數(shù)的方法可以隨時(shí)調(diào)用,調(diào)用一次即有效。
2) 首先要調(diào)用FindReader方法,返回值大于0才能進(jìn)行GetSAMID、SetReadType、ReadCardMsg、SetLoopTime的操作
四、新中新SDK讀卡器開發(fā)包開發(fā)函數(shù)返回值列表
類 別
返回值
(16進(jìn)制)
意 義
成功信息
90
操作成功
91
沒有該項(xiàng)內(nèi)容
9F
返回找卡成功信息
SAM通信
01
端口打開失敗/端口尚未打開/端口號(hào)不合法
02
PC接收超時(shí),在規(guī)定的時(shí)間內(nèi)未接收到規(guī)定長(zhǎng)度的數(shù)據(jù)。
03
PC判斷校驗(yàn)和錯(cuò)
04
USB設(shè)備未配置
05
該SAM串口不可用,只在Syn_GetCOMBaud時(shí)才有可能返回
06
USB設(shè)備被禁用
10
SAM判斷校驗(yàn)和錯(cuò)
11
SAM接收超時(shí),在規(guī)定的時(shí)間內(nèi)未接收到規(guī)定長(zhǎng)度的數(shù)據(jù)。
SAM命令錯(cuò)
21
接收業(yè)務(wù)終端的命令錯(cuò)誤,包括命令中的各種數(shù)值或邏輯搭配錯(cuò)誤
23
越權(quán)的操作申請(qǐng)
與ID卡相關(guān)
80
找卡不成功
81
選卡不成功
31
卡認(rèn)證機(jī)具失敗
32
機(jī)具認(rèn)證卡失敗
33
信息驗(yàn)證錯(cuò)誤
34
尚未找卡,不能進(jìn)行對(duì)卡的操作
40
無(wú)法識(shí)別的卡類型
41
讀卡操作失敗
50
寫卡操作失敗
61
用戶登錄失敗
SAM狀態(tài)
60
自檢失敗,不能接收命令
66
KDC沒有下載正式密鑰
2010-2-22增補(bǔ)兩個(gè)函數(shù)
Syn_PhotoToStrBase64 照片裝換成字符串。
int Syn_PhotoToStrBase64 (
char * cBase64,
int * iLen
);
參數(shù)說(shuō)明:
cBase64
[out] 字符串,返回照片轉(zhuǎn)化為base64格式的字符串
iLen
[out] 整形,返回字符串的長(zhǎng)度
返回值:
0 成功
其他 失敗
Syn_ StrBase64ToPhoto字符串轉(zhuǎn)化為照片(僅jpeg格式)。
int Syn_ StrBase64ToPhoto (
char * cBase64,
int * iLen
char *cPhotoName
);
參數(shù)說(shuō)明:
cBase64
[in] 字符串,要進(jìn)行轉(zhuǎn)化的Base64字符串,長(zhǎng)度不能超過(guò)4096
iLen
[in] 整形,字符串的長(zhǎng)度
cPhotoName
[out] 字符串,轉(zhuǎn)換之后照片的文件名
返回值:
0 成功
其他 失敗