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



