1. 概述
我公司開發的二代身份證讀卡系列機具適用于相關行業的聯機型應用。產品提供了完善的二次軟件開發接口(API)。本手冊對開發接口的文件組成、函數定義格式、調用方法及返回值等進行詳細的說明。
本通用開發包支持的設備型號如下:
1、 iDR200(串口和USB口)。
2、 iDR320(必須進入“同步應用”模式)。
3、 iDR400-1(必須進入“同步”模式)。
4、 iDR210(USB-HID免驅動接口)。
5、 iDR210(串口)。
注意:完全兼容原2.0版本開發接口,支持USB-HID接口和串口的iDR210。
1、如果使用原開發包采用動態調用dll方式,只需直接替換原dll即可。
2、如果使用原開發包采用的靜態調用方式,則在不改變代碼的情況下,對原程序重新編譯鏈接即可。
2. 系統要求
使用本API的PC機,必須滿足下列條件:
l Windows 98、Windows 2000 Pro、Windows 2000 Server、
Windows XP。
l 至少32兆內存(32M RAM or Larger)。
l 至少10兆空閑硬盤空間(10M Free Hard Disk Space or Larger)。
l 至少一個空閑普通串口或USB口(視用戶需求而定)。
3. 接口文件說明
接口文件包括:
Dewlt.dll 相關動態聯接庫
sdtapi.dll 該文檔所有說明的接口都在該動態聯接庫
SavePhoto.dll 相關動態聯接庫
sdtapi.h 該文檔包括的所有接口的頭文件
適用開發語言:
Visual C++ 5.0 及以后版本
C++ Builder 5.0 及以后版本
Visual Basic 5.0 及以后版本
Delphi 3.0 及以后版本
PowerBuilder 5.0 及以后版本
4. Sdtapi.ll接口函數說明
4.1. 端口函數
4.1.1. 端口初始化函數
原 型:int InitComm (int iPort)
說 明:本函數用于打開串口或USB并檢測讀卡設備是否就緒。
參 數:iPort:設置串口、USB(公安部標準驅動)、USB-HID(免驅動)、USB-CCID接口。
| 串口 | 1 – 16(十進制) | 例如: 1: 1(COM1) 2:2(COM2) |
| USB | 1001 | 1001 |
返 回 值:
| 值 | 意義 |
| 1 | 正確 |
| 其它 | 錯誤 |
注:如果讀卡機具連接的端口是確定的,可以直接使用相應端口號調用本函數。否則,可以采用循環查找的方式調用本函數。
4.1.2. 端口關閉接口
原 型:int CloseComm(void)
說 明:本函數用于關閉已打開的端口,一般在調用InitComm成功并完成讀卡任務后調用。
參 數:無
返 回 值:
| 值 | 意義 |
| 1 | 正確 |
| 其它 | 錯誤 |
注意:如果不再使用已打開的端口,必須使用CloseComm函數關閉端口。
4.1.3. 關閉天線接口
原 型:int Routon_ShutDownAntenna (void)
說 明:本函數用于關閉天線場強。使用前必須端口初始化(InitComm)成功,關閉天線后,調用卡認證接口或者找卡命令,天線場強將自動打開。
參 數:無
返 回 值:
| 值 | 意義 |
| 1 | 正確 |
| 0 | 錯誤 |
| -1 | 端口未打開 |
4.1.4. 獲取當前接入的HID接口iDR210數量
原 型:int GetHIDCount (void)
說 明:本函數用于獲取當前接入的HID接口iDR210的數量。使用前必須端口初始化(InitComm)成功。
參 數:無
返 回 值:
| 值 | 意義 |
| 數字 | 設備數量 |
4.1.5. 設定當前操作的HID接口iDR210
原 型:bool HIDSelect (int index)
說 明:本函數用于設定當前操作的HID接口iDR210。使用前必須端口初始化(InitComm)成功。
參 數:index,指定的iDR210的索引號。比如當前接入的設備數量是2,則在調用認證或找卡函數前,可分別使用HIDSelect (1)或HIDSelect (2)來指定準備操作的iDR210設備。
返 回 值:
| 值 | 意義 |
| true | 成功 |
| false | 失敗 |
4.2. 讀二代證相關函數
4.2.1. 卡認證接口
原 型:int Authenticate (void)
說 明:本函數用于發現身份證卡并選擇卡。
參 數:無
返 回 值:
| 值 | 意義 |
| 1 | 正確 |
| 0 | 錯誤 |
注:認證卡時,需要將身份證放置于讀卡機具上方并做稍許時間的停留。如果函數返回錯誤表示沒有發現卡或者卡停留時間太短。
4.2.2. 讀卡信息接口
原 型:int ReadBaseMsg( unsigned char * pMsg, int * len);
說 明:本函數用于讀取卡中基本信息,包括文字信息與圖像信息。文字信息已經分段解析,輸出格式為單字節,且每一字段信息已經被表示為字符串。圖象信息被解碼后存為文件photo.bmp(在當前工作目錄下)。
參 數:
pMsg [out] 無符號字符指針,指向讀到的文本信息。需要在調用時分配內存,字節數不小于192。函數調用成功后,各字段的文本信息已經轉換為單字節形式,并表示為字符串格式。字段意義及偏移值如下所示:
| 項目 | 長度(字節) | 說明 |
| 姓名 | 31 | 漢字 |
| 性別 | 3 | 漢字 |
| 民族 | 10 | 漢字 |
| 出生日期 | 9 | CCYYMMDD |
| 住址 | 71 | 漢字和數字 |
| 公民身份號碼 | 19 | 數字 |
| 簽發機關 | 31 | 漢字 |
| 有效期起始日期 | 9 | CCYYMMDD |
| 有效期截止日期 | 9 | CCYYMMDD 有效期為長期的表示為漢字“長期” |
Len [out] 整數, 返回總字符長度,可以給空值(NULL)。
返 回 值:
| 值 | 意義 |
| 1 | 正確 |
| 0 | 錯誤 |
原 型2:int ReadBaseMsgPhoto( unsigned char * pMsg, int * len,char * directory);
說 明:本函數用于讀取卡中基本信息,包括文字信息與圖像信息。文字信息已經分段解析,輸出格式為單字節,且每一字段信息已經被表示為字符串。圖象信息被解碼后存為文件photo.bmp(在directory指定目錄下)。
參 數:
pMsg [out] 無符號字符指針,指向讀到的文本信息。需要在調用時分配內存,字節數不小于192。函數調用成功后,各字段的文本信息已經轉換為單字節形式,并表示為字符串格式。字段意義及偏移值如下所示:
| 項目 | 長度(字節) | 說明 |
| 姓名 | 31 | 漢字 |
| 性別 | 3 | 漢字 |
| 民族 | 10 | 漢字 |
| 出生日期 | 9 | CCYYMMDD |
| 住址 | 71 | 漢字和數字 |
| 公民身份號碼 | 19 | 數字 |
| 簽發機關 | 31 | 漢字 |
| 有效期起始日期 | 9 | CCYYMMDD |
| 有效期截止日期 | 9 | CCYYMMDD 有效期為長期的表示為漢字“長期” |
Len [out] 整數, 返回總字符長度,可以給空值(NULL)。
directory [in] 字符指針,表示照片存儲路徑,路徑最后有無“\”均可;可以給空值(NULL),表示照片存儲在當前目錄中,此時函數效果同ReadBaseMsg。
返 回 值:
| 值 | 意義 |
| 1 | 正確 |
| 0 | 錯誤 |
| 4 | 目錄不存在 |
原 型3:int ReadBaseInfos( char * Name, char * Gender, char * Folk,
char *BirthDay, char * Code, char * Address,char *Agency, char * ExpireStart,char* ExpireEnd)
說 明:本函數用于讀取卡中基本信息,包括文字信息與圖像信息。文字信息以字符串格式輸出。照片信息被解碼后存為文件photo.bmp。
參 數:
Name [out] 字符型指針,指向姓名信息。需要在調用時分配內存,字節數不小31。
Gender [out] 字符型指針,指向性別信息(男或者女)。需要在調用時分配內存,字節數不小3。
Folk [out] 字符型指針,指向民族信息。需要在調用時分配內存,字節數不小10。
BirthDay [out] 字符型指針,指向出生日期信息。需要在調用時分配內存,字節數不小9,前四位為出生年,第5位到第6位是出生月,后兩位是出生日,格式為:CCYYMMDD。
Code [out] 字符型指針,指向身份證號碼信息。需要在調用時分配內存,字節數不小19。
Address [out] 字符型指針,指向地址信息。需要在調用時分配內存,字節數不小71。
Agency [out] 字符型指針,指向簽證機關信息。需要在調用時分配內存,字節數不小31。
ExpireStart [out] 字符型指針,指向有效期起始日期信息。需要在調用時分配內存,字節數不小9, 格式為:CCYYMMDD。
ExpireEnd [out] 字符型指針,指向有效期截至日期信息。需要在調用時分配內存,字節數不小9,格式為:CCYYMMDD,有效期為長期的表示為漢字“長期”。
返 回 值:
| 值 | 意義 |
| 1 | 正確 |
| 0 | 錯誤 |
| -4 | 缺少dewlt.dll、savephoto.dll等DLL |
原 型4:int ReadBaseInfosPhoto( char * Name, char * Gender, char * Folk,char *BirthDay, char * Code, char * Address,char *Agency, char * ExpireStart,char* ExpireEnd,char * directory)
說 明:本函數用于讀取卡中基本信息,包括文字信息與圖像信息。文字信息以字符串格式輸出。圖象信息被解碼后存為照片photo.bmp和photo.jpg,身份證正面反面合成圖片card.jpg(在directory指定目錄下)。
參 數:
Name [out] 字符型指針,指向姓名信息。需要在調用時分配內存,字節數不小31。
Gender [out] 字符型指針,指向性別信息(男或者女)。需要在調用時分配內存,字節數不小3。
Folk [out] 字符型指針,指向民族信息。需要在調用時分配內存,字節數不小10。
BirthDay [out] 字符型指針,指向出生日期信息。需要在調用時分配內存,字節數不小9,前四位為出生年,第5位到第6位是出生月,后兩位是出生日,格式為:CCYYMMDD。
Code [out] 字符型指針,指向身份證號碼信息。需要在調用時分配內存,字節數不小19。
Address [out] 字符型指針,指向地址信息。需要在調用時分配內存,字節數不小71。
Agency [out] 字符型指針,指向簽證機關信息。需要在調用時分配內存,字節數不小31。
ExpireStart [out] 字符型指針,指向有效期起始日期信息。需要在調用時分配內存,字節數不小9, 格式為:CCYYMMDD。
ExpireEnd [out] 字符型指針,指向有效期截至日期信息。需要在調用時分配內存,字節數不小9,格式為:CCYYMMDD,有效期為長期的表示為漢字“長期”。
directory [in] 字符指針,表示照片存儲路徑,路徑最后有無“\”均可;可以給空值(NULL),表示照片存儲在當前目錄中,此時函數效果同ReadBaseInfos。
返 回 值:
| 值 | 意義 |
| 1 | 正確 |
| 0 | 錯誤 |
| 4 | 目錄不存在 |
| -4 | 缺少dewlt.dll、savephoto.dll等DLL |
原 型5:int ReadBaseMsgW( unsigned char * pMsg, int * len);
說 明:本函數用于讀取卡中基本信息,包括文字信息與圖像信息。文字信息未解析,文字信息采用GB13000的UCS-2進行存儲,圖象信息被解碼后存為文件photo.bmp(在當前工作目錄下)。
參 數:
pMsg [out] 無符號字符指針,指向讀到的文本信息。需要在調用時分配內存,字節數不小于256。偏移值如下所示:
| 項目 | 長度(字節) | 說明 |
| 姓名 | 30 | 漢字 |
| 性別 | 2 | 代碼 |
| 民族 | 4 | 代碼 |
| 出生 | 16 | 年月日:YYYYMMDD |
| 住址 | 70 | 漢字和數字 |
| 公民身份號碼 | 36 | 數字 |
| 簽發機關 | 30 | 漢字 |
| 有效期起始日期 | 16 | 年月日:YYYYMMDD |
| 有效期截止日期 | 16 | 年月日:YYYYMMDD 有效期為長期時存儲“長期” |
| 最新住址 | 70 | 漢字和數字 |
Len [out] 整數, 返回基本信息長度。
返 回 值:
| 值 | 意義 |
| 1 | 正確 |
| 0 | 錯誤 |
原 型6:int ReadBaseMsgWPhoto( unsigned char * pMsg, int * len,char * directory));
說 明:本函數用于讀取卡中基本信息,包括文字信息與圖像信息。文字信息未解析,文字信息采用GB13000的UCS-2進行存儲,圖象信息被解碼后存為文件photo.bmp(在directory指定目錄下)。
參 數:
pMsg [out] 無符號字符指針,指向讀到的文本信息。需要在調用時分配內存,字節數不小于256。偏移值如下所示:
| 項目 | 長度(字節) | 說明 |
| 姓名 | 30 | 漢字 |
| 性別 | 2 | 代碼 |
| 民族 | 4 | 代碼 |
| 出生 | 16 | 年月日:YYYYMMDD |
| 住址 | 70 | 漢字和數字 |
| 公民身份號碼 | 36 | 數字 |
| 簽發機關 | 30 | 漢字 |
| 有效期起始日期 | 16 | 年月日:YYYYMMDD |
| 有效期截止日期 | 16 | 年月日:YYYYMMDD 有效期為長期時存儲“長期” |
| 最新住址 | 70 | 漢字和數字 |
Len [out] 整數, 返回基本信息長度。
directory [in] 字符指針,表示照片存儲路徑,路徑最后有無“\”均可;可以給空值(NULL),表示照片存儲在當前目錄中,此時函數效果同ReadBaseMsgW。
返 回 值:
| 值 | 意義 |
| 1 | 正確 |
| 0 | 錯誤 |
| 4 | 目錄不存在 |
注:讀卡基本信息時,需要將身份證置于讀卡機具上方做稍許時間的停留。
4.2.3. 讀追加地址信息
原 型1:int ReadNewAppMsg( unsigned char * pMsg, int * num );
說 明:本函數用于讀取卡中追加地址信息,輸出格式為單字節字符串格式。
參 數:
pMsg [out] 無符號字符指針,指向讀到的追加地址信息。需要在調用時分配內存,字節數不小于284。字段意義及偏移值如下所示:
| 項目 | 長度(字節) | 說明 |
| 追加地址1 | 71 | 漢字和數字 |
| 追加地址2 | 71 | 漢字和數字 |
| 追加地址3 | 71 | 漢字和數字 |
| 追加地址4 | 71 | 漢字和數字 |
num [out] 整數, 返回讀到的追加地址數。最多為4個。
返 回 值:
| 值 | 意義 |
| 1 | 正確 |
| 0 | 錯誤 |
原 型2:int ReadNewAppInfos( unsigned char * addr1,
unsigned char * addr2,unsigned char * addr3,
unsigned char * addr4,int * num );
說 明:本函數用于讀取卡中追加地址信息,輸出格式為單字節字符串格式。
參 數:
addr1、addr2、addr3、addr4 [out] 無符號字符指針,分別指向讀到的追加地址信息。需要在調用時分配內存,字節數分別不小于71。
num [out] 整數, 返回讀到的追加地址數。最多為4個。
返 回 值:
| 值 | 意義 |
| 1 | 正確 |
| 0 | 錯誤 |
原 型3:int ReadNewAppMsgW( unsigned char * pMsg, int * num );
說 明:本函數用于讀取卡中追加地址信息,信息采用GB13000的UCS-2進行存儲。
參 數:
pMsg [out] 無符號字符指針,指向讀到的追加地址信息。需要在調用時分配內存,字節數不小于280。偏移值如下所示:
| 項目 | 長度(字節) | 說明 |
| 追加地址1 | 70 | 漢字和數字 |
| 追加地址2 | 70 | 漢字和數字 |
| 追加地址3 | 70 | 漢字和數字 |
| 追加地址4 | 70 | 漢字和數字 |
num [out] 整數, 返回讀到的追加地址數。最多為4個。
返 回 值:
| 值 | 意義 |
| 1 | 正確 |
| 0 | 錯誤 |
注:讀追加地址信息時,需要將身份證置于讀卡機具上方做稍許時間的停留。
4.2.4. 讀卡體管理號
原 型:int ReadIINSNDN( char * pMsg );
說 明:本函數用于讀取身份證卡的管理號。
參 數:
pMsg [out] 字符指針,需要在調用時分配內存,字節數不小于16。返回8個16進制證卡序列號。
返 回 值:
| 值 | 意義 |
| 1 | 正確 |
| 0 | 錯誤 |
注:針對ERP編碼為1IDA14016(即PCB型號B1342-3) 和 1IDA14018(即PCB型號B1342-3)的串口組件設備,請使用原型2接口來讀取身份證物理卡號。
原型2: int Routon_ReadIINSNDN( char * pMsg );
說 明:本函數用于讀取身份證卡的管理號。
參 數:
pMsg [out] 字符指針,需要在調用時分配內存,字節數不小于16。返回8個16進制證卡序列號。
返 回 值:
| 值 | 意義 |
| 1 | 正確 |
| 0 | 錯誤 |
4.2.5. 讀模塊序列號
原 型:int GetSAMIDToStr( char *pcSAMID );
說 明:本函數用于讀取驗證安全控制模塊(SAM_V)的序列號。
參 數:
pcSAMID [out] 字符指針,需要在調用時分配內存,字節數不小于37。模塊序列號分為5個部分,格式為『2字符.2字符-8字符-10字符-10字符』,共36個字符;
返 回 值:
| 值 | 意義 |
| 1 | 正確 |
| 0 | 協議包讀寫錯誤 |
| -1 | 通訊失敗 |
| -3 | 接收錯誤協議包 |
| -4 | 讀取包錯誤(base64串口設備) |
| -5,-6,-8 | 讀取超時 |
4.2.6. 判斷身份證是否在設備上
原 型:int CardOn ( void);
說 明:本函數用于用于判斷身份證是否在機具上。
注 意:只能用于讀卡之后判斷卡是否離開,在找卡、選卡、讀卡過程中不要使用本函數,會導致讀卡失敗!
參 數: 無
返 回 值:
| 值 | 意義 |
| 1 | 有身份證 |
| 0 | 無身份證 |
4.2.7. 判斷設備是否支持指紋信息讀取
原 型:int IsFingerPrintDevice(void);
說 明:本函數用于判斷iDR210是否支持指紋信息讀取。
參 數:無
注 意:使用前需要先端口初始化InitComm。
返 回 值:
| 值 | 意義 |
| 1 | 支持 |
| -1 | 設備不支持 |
| -2 | 模塊不支持 |
4.2.8. 讀指紋及卡信息接口
原 型:int ReadBaseFPMsg( unsigned char * pMsg, int * len ,unsigned char * pucFPMsg,unsigned int *puiFPMsgLen);
說 明:本函數用于讀取指紋信息及卡中基本信息,包括文字信息與圖像信息。文字信息已經分段解析,輸出格式為單字節,且每一字段信息已經被表示為字符串。圖象信息被解碼后存為文件photo.bmp(在當前工作目錄下)。
參 數:
pMsg [out] 無符號字符指針,指向讀到的文本信息。需要在調用時分配內存,字節數不小于192。函數調用成功后,各字段的文本信息已經轉換為單字節形式,并表示為字符串格式。字段意義及偏移值如下所示:
| 項目 | 長度(字節) | 說明 |
| 姓名 | 31 | 漢字 |
| 性別 | 3 | 漢字 |
| 民族 | 10 | 漢字 |
| 出生日期 | 9 | CCYYMMDD |
| 住址 | 71 | 漢字和數字 |
| 公民身份號碼 | 19 | 數字 |
| 簽發機關 | 31 | 漢字 |
| 有效期起始日期 | 9 | CCYYMMDD |
| 有效期截止日期 | 9 | CCYYMMDD 有效期為長期的表示為漢字“長期” |
Len [out] 整數, 返回總字符長度,可以給空值(NULL)。
pucFPMsg [out] 無符號字符指針,指向讀到的指紋信息。需要在調用時分配內存,字節數不小于1024。
puiFPMsgLen [out] 整數, 返回指紋信息長度。
返 回 值:
| 值 | 意義 |
| 1 | 正確 |
| 0 | 錯誤 |
4.3. Type A卡相關函數
注意:串口型iDR200和iDR210支持讀寫Type A卡。
iDR210使用Routon開頭的相關函數。
串口型iDR200使用dc_開頭的相關函數。
4.3.1. 找IC卡
原 型:int Routon_IC_FindCard();
說 明:本函數用于尋卡。
參 數: 無。
返 回 值:
| 值 | 意義 |
| 1 | M1-S50卡 |
| 2 | CPU卡 |
| 3 | M1-S70卡 |
| 4 | Mifare UltraLight卡 |
| 0 | 未找到卡 |
| 其他 | 不明卡錯誤碼 |
4.3.2. 讀IC卡序列號高級函數
原 型:int Routon_IC_HL_ReadCardSN(char * SN);
說 明:本函數用于讀取IC卡的序列號,自動完成找卡、選卡等過程。
參 數: SN [out] 字符指針,需要在調用時分配內存,字節數不小于16。
返 回 值:
| 值 | 意義 |
| 1 | 正確 |
| 0 | 錯誤 |
4.3.3. 讀IC卡區塊高級函數
原 型:
int Routon_IC_HL_ReadCard (int SID,int BID,
int KeyType,unsigned char * Key,
unsigned char * data);
說 明:本函數用于讀取IC卡指定扇區的數據內容,在調用本函數前需要先找卡Routon_IC_FindCard()。
參 數:
SID為扇區號,0-15之間(對M1S50卡)。
BID為塊號,0-3之間。
KeyType為密鑰類型,兩種:0x60 keyA,0x61 keyB。
Key為密鑰。
data為讀取到的數據內容,需要在調用時分配內存,字節數不小于16。
返 回 值:
| 值 | 意義 |
| 1 | 正確 |
| 0 | 讀卡錯誤 |
| -1 | 參數錯誤 |
| -3 | 密鑰或卡類型錯 |
備注:如果為Mifare UltraLight卡,參數SID,KeyType,Key可為0或空值,只需傳入BID即可。
4.3.4. 寫IC卡區塊高級函數
原 型:
int Routon_IC_HL_WriteCard (int SID,int BID,
int KeyType,unsigned char * Key,
unsigned char * data);
說 明:本函數用于向IC卡指定扇區寫入數據內容,在調用本函數前需要先找卡Routon_IC_FindCard()。
參 數:
SID為扇區號,0-15之間(對M1S50卡)。
BID為塊號,0-3之間。
KeyType為密鑰類型,兩種:0x60 keyA,0x61 keyB。
Key為密鑰。
data為準備寫入的數據內容,字節數為16。
返 回 值:
| 值 | 意義 |
| 1 | 正確 |
| 0 | 錯誤 |
| -3 | 密鑰或卡類型錯 |
備注:如果為Mifare UltraLight卡,參數SID,KeyType,Key可為0或空值,只需傳入BID與data即可。
4.3.5. 控制蜂鳴器和指示燈
原 型1:
int HID_BeepLED(bool BeepON,bool LEDON,unsigned int duration);
說 明:本函數用于控制iDR210 USB-HID 設備的LED指示燈和蜂鳴器。
參 數:
BeepON和LEDON為布爾類型,值為True時,對應的蜂鳴器和指示燈打開;duration為打開持續的時間,單位為毫秒。
返 回 值:
| 值 | 意義 |
| 1 | 正確 |
| 0 | 錯誤 |
原 型2:
int Routon_BeepLED(bool BeepON,bool LEDON,unsigned int duration);
說 明:本函數用于控制iDR200 串口型設備LED指示燈和蜂鳴器。
參 數:
BeepON和LEDON為布爾類型,值為True時,對應的蜂鳴器和指示燈打開;duration為打開持續的時間,單位為毫秒。
返 回 值:
| 值 | 意義 |
| 1 | 正確 |
| 0 | 錯誤 |
4.3.6. 讀取PSAM卡ATR數據
原 型:
int PSAM_ReadATR(unsigned char CardIndex,unsigned char SpeedIndex,unsigned char TypeIndex, unsigned char *_Data);
說 明:本函數用于讀取設備上PSAM卡的ATR數據
參 數:
CardIndex: 0x01為卡座1, 0x02為卡座2
SpeedIndex: CPU卡的速率 (0:4800,1:9600,2:19200,3:38400)
TypeIndex: CPU卡電壓類型(0:5V,1:3V)
*_Data: 讀出數據緩存區指針
返 回 值:
| 值 | 意義 |
| 0 | 正確 |
| -1 | 未插卡 |
| -2 | 設置卡座錯誤 |
| -3 | 設置速率錯誤 |
| -4 | 設置電壓錯誤 |
| -5 | 設備未連接 |
4.3.7. 向PSAM卡發送數據
原 型:
int PSAM_SendCMD(unsigned char CardIndex,unsigned char *_Cmd,int Len, unsigned char *_Data)
說 明:本函數用于向PSAM卡發送數據
參 數:
CardIndex:0x01為卡座1, 0x02為卡座2
*_Cmd:向PSAM卡發送命令數據緩沖區指針
Len:命令的長度
*_Data:PSAM卡返回數據緩存區指針
返 回 值:
| 值 | 意義 |
| 0 | 正確 |
| -1 | 未知錯誤 |
| -2 | 設置卡座錯誤 |
| -3 | 設備未連接 |
4.3.8. PSAM卡下電
原 型:
int STDCALL PSAM_PowerOff(unsigned char CardIndex)
說 明:本函數用于斷開PSAM卡電源,降低功耗
參 數:
CardIndex:0x01為卡座1, 0x02為卡座2
返 回 值:
| 值 | 意義 |
| 0 | 正確 |
| -1 | 未知錯誤 |
| -2 | 設置卡座錯誤 |
| -3 | 設備未連接 |
4.3.9. dc_init
注意:僅串口型iDR200可使用本接口,iDR210使用InitComm()進行端口初始化。
原 型:int dc_init(int port,long baud);
說 明:初始化通訊口。
參 數:
port:取值為1~16。
baud:為通訊波特率9600~115200。
返 回 值:成功則返回串口通訊設備標識符>0,失敗返回負值。
4.3.10. dc_exit
注意:僅串口型iDR200可使用本接口,iDR210使用CloseComm()關閉端口。
原 型:int dc_exit(int dev);
說 明:關閉端口。
參 數:
icdev:通訊設備標識符。
返 回 值:成功返回0,失敗返回負值。
4.3.11. dc_request
原 型:int dc_request(int icdev,unsigned char _Mode,unsigned int *TagType);
說 明:尋卡請求。
參 數:
icdev:通訊設備標識符。
_Mode:尋卡模式。0表示Standard模式;1表示All模式。
Tagtype:卡類型值。
返 回 值:成功返回0,失敗返回負值。
4.3.12. dc_anticoll
原 型:int dc_anticoll(int icdev,unsigned char _Bcnt,unsigned long *_Snr);
說 明:防卡沖突,返回卡的序列號。
參 數:
icdev:通訊設備標識符。
_Bcn: 設為0。
_Snr:返回的卡序列號地址。
返 回 值:成功返回0,失敗返回負值。
4.3.13. dc_select
原 型:int dc_select(int icdev,unsigned long _Snr,unsigned char *_Size);
說 明:從多個卡中選取一個給定序列號的卡。
參 數:
icdev:通訊設備標識符。
_Snr:卡序列號。
_Size:指向返回的卡容量的數據(暫不支持,無返回)。
返 回 值:成功返回0,失敗返回負值。
4.3.14. dc_authentication_passaddr
原 型:int dc_authentication_passaddr(int icdev, unsigned char _Mode, unsigned char Addr, unsigned char *passbuff);
說 明:核對密碼函數。
參 數:
Icdev:通訊設備標識符。
_Mode:密碼驗證模式。0x60 keyA,0x61 keyB。
blockAddr:要驗證密碼的塊地址號。
passbuff:密碼字符串。
返 回 值:成功返回0,失敗返回負值。
4.3.15. dc_read
原 型:dc_read(int icdev,unsigned char _Adr,unsigned char *_Data);
說 明:讀取卡中數據。
參 數:
icdev:通訊設備標識符。
_Adr:M1S50卡——塊地址(0~63),M1S70(0~255)。
_Data:讀出數據。
返 回 值:成功返回0,失敗返回負值。
4.3.16. dc_write
原 型:dc_write(int icdev,unsigned char _Adr,unsigned char *_Data);
說 明:向卡中寫入數據。
參 數:
icdev:通訊設備標識符。
_Adr:M1S50卡——塊地址(1~63),M1S70(1~255)。
_Data:要寫入的數據。
返 回 值:成功返回0,失敗返回負值。
4.3.17. dc_halt
原 型:dc_halt(int icdev);
說 明:中止對該卡操作。
參 數:
icdev:通訊設備標識符。
返 回 值:成功返回0,失敗返回負值。
4.3.18. dc_BeepLED
原 型:dc_BeepLED(int icdev,bool BeepON,bool LEDON,unsigned int duration);
說 明:控制LED指示燈和蜂鳴器。
參 數:
icdev:通訊設備標識符。
BeepON:值為true時,蜂鳴器打開。
LEDON:值為true時,指示燈打開。
duration為持續的時間,單位為毫秒。
返 回 值:成功返回0,失敗返回負值。
4.3.19. Routon_CPUCard_PowerOFF
原 型:Routon_CPUCard_PowerOFF(void);
說 明:CPU卡下電。
參 數: 無
返 回 值:成功返回1,失敗返回0。
4.3.20. Routon_CPUCard_Active
原 型:Routon_CPUCard_Active(void);
說 明:CPU卡激活。
參 數: 無
返 回 值:成功返回1,失敗返回0。
4.3.21. Routon_CPUCard_ATS
原 型:Routon_CPUCard_ATS(unsigned char * ATSMsg,
unsigned int * ATSLen);
說 明:CPU卡發送RATS,返回ATS數據。
參 數:
ATSMsg ATS數據
ATSLen ATS數據長度
返 回 值:成功返回1,失敗返回0。
4.3.22. Routon_CPUCard_PPS
原 型:Routon_CPUCard_PPS(unsigned char PPS0,unsigned char PPS1);
說 明:CPU卡發送PPS參數。
參 數:
PPS0 PPS0值
PPS1 PPS1值
返 回 值:成功返回1,失敗返回0。
4.3.23. Routon_APDU
原 型:Routon_APDU (char * apdu,unsigned char * data,int * datalen)說 明:向CPU卡發送APDU,并獲取返回數據。
參 數:
apdu APDU指令,為字符串數據
data APDU指令的返回數據,字節數據
datalen APDU指令返回數據長度
返 回 值:
| 值 | 意義 |
| 0 | 失敗 |
| 1 | 成功 |
| -1 | APDU指令超長(超過251字節) |
| -2 | 通訊錯誤 |
| -3 | 不支持端口協議 |
4.3.24. Routon_ ShutDownAntenna
原 型: Routon_ ShutDownAntenna (void)
說 明:關閉天線。
參 數:
無
返 回 值:
| 值 | 意義 |
| 0 | 失敗 |
| 1 | 成功 |
4.3.25. Routon_Mute(bool isMute)
原 型: Routon_Mute(bool isMute)
說 明:蜂鳴器開關。
參 數:
isMute true為關閉,false為打開
返 回 值:
| 值 | 意義 |
| 0 | 失敗 |
| 1 | 成功 |
4.3.26. Routon_RepeatRead(bool isRepeat)
原 型: Routon_RepeatRead(bool isRepeat)
說 明:設置是否可以重復讀一張身份證,默認是不重復讀。
參 數:
isRepeat true為可重復讀,false為只能讀一次
返 回 值:
| 值 | 意義 |
| 0 | 失敗 |
| 1 | 成功 |
4.3.27. Routon_IsSaveWlt(bool isWlt)
原 型: Routon_IsSaveWlt(bool isWlt)
說 明:設置是否保存wlt文件,默認不保存。
備注:在調用讀取身份證信息接口之前調用該接口
參 數:
isWlt true保存wlt文件,false為不保存
返 回 值:
| 值 | 意義 |
| 0 | 失敗 |
| 1 | 成功 |
4.3.28. ReadBaseInfosFPPhoto(char* Name, char* Gender, char* Folk, char* BirthDay, char * Code, char* Address, char* Agency, char* ExpireStart, char* ExpireEnd, char* directory, unsigned char * pucFPMsg, unsigned int * puiFPMsgLen)
說 明:本函數用于讀取卡中基本信息,包括文字信息與圖像信息。文字信息以字符串格式輸出。圖象信息被解碼后存為照片photo.bmp和photo.jpg,身份證正面反面圖片(在directory指定目錄下)。
參 數:
Name [out] 字符型指針,指向姓名信息。需要在調用時分配內存,字節數不小31。
Gender [out] 字符型指針,指向性別信息(男或者女)。需要在調用時分配內存,字節數不小3。
Folk [out] 字符型指針,指向民族信息。需要在調用時分配內存,字節數不小10。
BirthDay [out] 字符型指針,指向出生日期信息。需要在調用時分配內存,字節數不小9,前四位為出生年,第5位到第6位是出生月,后兩位是出生日,格式為:CCYYMMDD。
Code [out] 字符型指針,指向身份證號碼信息。需要在調用時分配內存,字節數不小19。
Address [out] 字符型指針,指向地址信息。需要在調用時分配內存,字節數不小71。
Agency [out] 字符型指針,指向簽證機關信息。需要在調用時分配內存,字節數不小31。
ExpireStart [out] 字符型指針,指向有效期起始日期信息。需要在調用時分配內存,字節數不小9, 格式為:CCYYMMDD。
ExpireEnd [out] 字符型指針,指向有效期截至日期信息。需要在調用時分配內存,字節數不小9,格式為:CCYYMMDD,有效期為長期的表示為漢字“長期”。
directory [in] 字符指針,表示照片存儲路徑,路徑最后有無“\”均可;可以給空值(NULL),表示照片存儲在當前目錄中,此時函數效果同ReadBaseInfos。
pucFPMsg [out] 無符號字符指針,指向讀到的指紋信息。需要在調用時分配內存,字節數不小于1024。
puiFPMsgLen [out] 整數, 返回指紋信息長度。
返 回 值:
| 值 | 意義 |
| 1 | 正確 |
| 0 | 錯誤 |
| 4 | 目錄不存在 |
| -4 | 缺少dewlt.dll、savephoto.dll等DLL |
4.3.29. Routon_DecideIDCardType()
說 明:本函數用戶判斷當前證件類型是身份證,還是外國人居留證。注意,該函數需在調用Authenticate函數后再調用。
返 回 值:
| 值 | 意義 |
| 100 | 中國身份證 |
| 101 | 外國人居留證 |
| 其它 | 其它錯誤 |
4.3.30. Routon_ReadForeignBaseInfos (char *enName, char *Gender, char *Code, char *Nation, char *cnName, char *BirthDay, char * ExpireStart,char* ExpireEnd)
廢棄,請使用接口Routon_ReadAllForeignBaseInfos
說 明:本函數用來讀取外國人居留證相關信息內容,照片文件保存在當前stdapi.dll文件相同目錄中,照片文件名為photo.bmp。
參 數:
enName [out] 字符型指針,指向英文姓名信息。需要在調用時分配內存,字節數不小121。
Gender [out] 字符型指針,指向性別信息(男或者女)。需要在調用時分配內存,字節數不小3。
Code [out] 字符型指針,指向身份證號碼信息。需要在調用時分配內存,字節數不小31。
Nation [out] 字符型指針,指向國籍信息。需要在調用時分配內存,字節數不小40。
cnName [out] 字符型指針,指向中文姓名信息。需要在調用時分配內存,字節數不小31。
BirthDay [out] 字符型指針,指向出生日期信息。需要在調用時分配內存,字節數不小9,前四位為出生年,第5位到第6位是出生月,后兩位是出生日,格式為:CCYYMMDD。
ExpireStart [out] 字符型指針,指向有效期起始日期信息。需要在調
用時分配內存,字節數不小9, 格式為:CCYYMMDD。
ExpireEnd [out] 字符型指針,指向有效期截至日期信息。需要在調用時分配內存,字節數不小9,格式為:CCYYMMDD,有效期為長期的表示為漢字“長期”。
返 回 值:
| 值 | 意義 |
| 0 | 讀取卡信息失敗 |
| 1 | 讀取卡信息成功 |
4.3.31. Routon_ReadForeignBaseInfosPhoto (char*enName, char *Gender, char *Code, char *Nation, char *cnName, char *BirthDay, char * ExpireStart,char* ExpireEnd,char* directory)
廢棄,請使用接口Routon_ReadAllForeignBaseInfosPhoto
說 明:本函數用來讀取外國人居留證相關信息內容,照片文件保存在當前stdapi.dll文件相同目錄中,照片文件名為photo.bmp。(
參 數:
enName [out] 字符型指針,指向英文姓名信息。需要在調用時分配內存,字節數不小121。
Gender [out] 字符型指針,指向性別信息(男或者女)。需要在調用時分配內存,字節數不小3。
Code [out] 字符型指針,指向身份證號碼信息。需要在調用時分配內存,字節數不小31。
Nation [out] 字符型指針,指向國籍信息。需要在調用時分配內存,字節數不小40。
cnName [out] 字符型指針,指向中文姓名信息。需要在調用時分配內存,字節數不小31。
BirthDay [out] 字符型指針,指向出生日期信息。需要在調用時分配內存,字節數不小9,前四位為出生年,第5位到第6位是出生月,后兩位是出生日,格式為:CCYYMMDD。
ExpireStart [out] 字符型指針,指向有效期起始日期信息。需要在調
用時分配內存,字節數不小9, 格式為:CCYYMMDD。
ExpireEnd [out] 字符型指針,指向有效期截至日期信息。需要在調用時分配內存,字節數不小9,格式為:CCYYMMDD,有效期為長期的表示為漢字“長期”。
directory [in] 字符指針,表示照片存儲路徑,路徑最后有無“\”均可;可以給空值(NULL),表示照片存儲在當前目錄中,此時函數效果同Routon_ReadForeignBaseInfos。
返 回 值:
| 值 | 意義 |
| 0 | 讀取卡信息失敗 |
| 1 | 讀取卡信息成功 |
4.3.32. Routon_ReadAllForeignBaseInfos (char*EnName, char *Gender, char *Code, char *Nation, char *CnName, char *BirthDay, char * ExpireStart,char* ExpireEnd,char* CardVertion,char *Agency,char *CardType, char *FutureItem)
說 明:本函數用來讀取外國人居留證所有信息內容,頭像照片文件保存在當前stdapi.dll文件相同目錄中,照片文件名為photo.bmp。
參 數:
EnName [out] 字符型指針,指向英文姓名信息。需要在調用時分配內存,字節數不小121。
Gender [out] 字符型指針,指向性別信息(男或者女)。需要在調用時分配內存,字節數不小3。
Code [out] 字符型指針,指向身份證號碼信息。需要在調用時分配內存,字節數不小31。
Nation [out] 字符型指針,指向國籍信息。需要在調用時分配內存,字節數不小40。
CnName [out] 字符型指針,指向中文姓名信息。需要在調用時分配內存,字節數不小31。
BirthDay [out] 字符型指針,指向出生日期信息。需要在調用時分配內存,字節數不小9,前四位為出生年,第5位到第6位是出生月,后兩位是出生日,格式為:CCYYMMDD。
ExpireStart [out] 字符型指針,指向有效期起始日期信息。需要在調
用時分配內存,字節數不小9, 格式為:CCYYMMDD。
ExpireEnd [out] 字符型指針,指向有效期截至日期信息。需要在調用時分配內存,字節數不小9,格式為:CCYYMMDD,有效期為長期的表示為漢字“長期”。
CardVertion [out] 字符型指針,指向證件版本號信息。需要在調用時分配內存,字節數不小于5。
Agency [out] 字符型指針,指向當次申請受理機關代碼信息。需要在調用時分配內存,字節數不小于9。
CardType [out] 字符型指針,指向證件類型標識。需要在調用時分配內存,字節數不小于2。外國人永久居留證的標識為大寫字母“I”。
FutureItem [out] 字符型指針,指向預留項信息。需要在調用時分配內存,自己數不小于7。目前存放了三個空格符。
返 回 值:
| 值 | 意義 |
| 0 | 讀取卡信息失敗 |
| 1 | 讀取卡信息成功 |
4.3.33. Routon_ReadAllForeignBaseInfosPhoto (char*EnName, char *Gender, char *Code, char *Nation, char *CnName, char *BirthDay, char * ExpireStart,char* ExpireEnd,char* CardVertion,char *Agency,char *CardType, char *FutureItem,char *Directory)
說 明:本函數用來讀取外國人居留證所有信息內容,照片文件保存在當前stdapi.dll文件相同目錄中,照片文件名為photo.bmp。
參 數:
EnName [out] 字符型指針,指向英文姓名信息。需要在調用時分配內存,字節數不小121。
Gender [out] 字符型指針,指向性別信息(男或者女)。需要在調用時分配內存,字節數不小3。
Code [out] 字符型指針,指向身份證號碼信息。需要在調用時分配內存,字節數不小31。
Nation [out] 字符型指針,指向國籍信息。需要在調用時分配內存,字節數不小40。
CnName [out] 字符型指針,指向中文姓名信息。需要在調用時分配內存,字節數不小31。
BirthDay [out] 字符型指針,指向出生日期信息。需要在調用時分配內存,字節數不小9,前四位為出生年,第5位到第6位是出生月,后兩位是出生日,格式為:CCYYMMDD。
ExpireStart [out] 字符型指針,指向有效期起始日期信息。需要在調
用時分配內存,字節數不小9, 格式為:CCYYMMDD。
ExpireEnd [out] 字符型指針,指向有效期截至日期信息。需要在調用時分配內存,字節數不小9,格式為:CCYYMMDD,有效期為長期的表示為漢字“長期”。
CardVertion [out] 字符型指針,指向證件版本號信息。需要在調用時分配內存,字節數不小于5。
Agency [out] 字符型指針,指向當次申請受理機關代碼信息。需要在調用時分配內存,字節數不小于9。
CardType [out] 字符型指針,指向證件類型標識。需要在調用時分配內存,字節數不小于2。外國人永久居留證的標識為大寫字母“I”。
FutureItem [out] 字符型指針,指向預留項信息。需要在調用時分配內存,自己數不小于7。目前存放了三個空格符。
Directory [in] 字符指針,表示照片存儲路徑,路徑最后有無“\”均可;可以給空值(“”),表示照片存儲在當前用戶的臨時目錄中,此時函數效果同Routon_ReadForeignBaseInfos。
返 回 值:
| 值 | 意義 |
| 0 | 讀取卡信息失敗 |
| 1 | 讀取卡信息成功 |
4.3.34. FindAllUSB(int *SCount, int *HCount)
說 明:本函數用于“部標”設備和HID設備同時連接PC時,獲取當前PC連接的讀卡設備的情況,能夠識別是否有“部標”設備,有幾臺HID設備。
備 注:僅針對USB接口的“部標”設備和HID設備。
參 數:
SCount[out]整型指針,指向當前PC連接“部標”設備數量。需要在調用時分配內存,字節數為1。SCount[0]值為0表示無“部標”設備,1表示有“部標”設備。
HCount[out]整型指針,指向當前PC連接HID設備數量。需要在調用時分配內存,字節數為1。HCount[0]值為0表示無HID設備,1表示有一臺HID設備,2表示有兩臺HID設備。
返 回 值:
| 值 | 意義 |
| 1 | 尋找USB設備成功 |
| 其他 | 尋找USB設備失敗 |
4.3.35. SelectUSB(int index)
說 明:根據用戶選擇的“部標”設備和HID設備,初始化相應的設備端口。
備 注:僅針對USB接口的“部標”設備和HID設備,調用之前必須先先FindAllUSB()函數尋找USB接口設備。
參 數:
index整數,表示“部標”設備和HID設備。0代表“部標”設備,1代表HID1,2代表HID2。
返 回 值:
| 值 | 意義 |
| 1 | 初始化指定設備端口成功 |
| 0 | 初始化指定設備端口失敗 |
4.3.36. CloseSDTandHIDComm(int index)
說 明:根據打開的“部標”設備和HID設備的端口,關閉相應的端口。
備 注:僅針對USB接口的“部標”設備和HID設備。
參 數:
index整數,表示“部標”設備和HID設備。0代表“部標”設備,1代表HID1,2代表HID2。
返 回 值:
| 值 | 意義 |
| 1 | 關閉指定設備端口成功 |
| 0 | 關閉指定設備端口失敗 |
4.3.37. InitSDTandHIDComm(int index)
說 明:尋找當前PC連接的USB接口設備,根據用戶選擇的“部標”設備和HID設備,初始化相應的設備端口。
備 注:僅針對USB接口的“部標”設備和HID設備。該接口包含了FindAllUSB()和SelectUSB()的功能。
參 數:
index整數,表示“部標”設備和HID設備。0代表“部標”設備,1代表HID1,2代表HID2。
返 回 值:
| 值 | 意義 |
| 1 | 初始化指定設備端口成功 |
| 0 | 初始化指定設備端口失敗 |
4.3.38. Routon_ReadAllTypeCardInfos(int port, char* pMsg, char *PhotoPath)
說 明:讀身份證或者外國人居留證
參 數:
port 整數,表示設備的端口號或者串口號。
pMsg [out] 字符型指針,指向卡片的基本信息,在調用時分配內存,內存不小于265字節。
Photopath [in] 字符指針,表示頭像照片存儲路徑,路徑最后有無“\”均可;若不指定頭像相片路徑PhotoPath,則傳入NULL或者“”,照片存在當前程序目錄中;若指定頭像照片路徑PhotoPath,則傳入不包含文件名的目錄,如“d:\\temp”。
返 回 值:
| 返回值 | 含義 |
| 1 | 卡片類型身份證 |
| 2 | 卡片類型外國人居留證 |
| -1 | 文本信息指針為空,或指定照片路徑不存在 |
| -2 | 端口打開失敗 |
| -3 | 卡認證失敗 |
| -4 | 讀卡失敗 |
| -5 | 頭像照片生成失敗 |
備 注:卡基本信息返回值pMsg格式
身份證:姓名|性別|民族|出生年月日|住址|公民身份號碼|簽發機關|有效期限起始日期|有效期限結束日期|有效期限
外國證: 英文姓名|中文姓名|性別|國籍或地區代號|出生年月日|永久居住證號碼|簽發機關|有效期限起始日期|有效期限結束日期|有效期限
5. 接口使用流程及示例
在連接好讀卡機具以后,首先需要調用函數InitComm打開相應端口。打開端口成功以后,即可以使用循環認證并讀取卡中信息。
5.1. 二代證示例
示 例:
#include “sdtapi.h”
int main()
{
int ret;
int iPort=1;
ret=InitComm(iPort);
if ( ret ){
ret= Authenticate ();
if (ret){
char Msg[200];
ret= ReadBaseMsg (Msg, 0 );
if (ret > 0 ){
//顯示文字及圖片信息
}
char Msg1[200];
int num;
ret= ReadNewAppMsg (Msg1, &num );
if (ret > 0 ){
//顯示追加地址信息
}
}
}
ret= CloseComm();
return ret;
}
5.2. TypeA卡示例(iDR210)
示 例:
#include “sdtapi.h”
int main()
{
int ret;
int dev;
ret =InitComm (1001);//USB接口的iDR210
if (ret)
{
char csn[1024]={0};
if (Routon_IC_HL_ReadCardSN(csn))//讀A卡卡號
{
//
}
else
{
MessageBox( NULL, "Routon_IC_HL_ReadCardSN error。",
"錯誤", MB_OK | MB_ICONERROR );
return;
}
ret=Routon_IC_FindCard();
if (ret)
{
int sid=0,bid=0;
unsigned char da[64]={0};
unsigned char pw[6]={0xff,0xff,0xff,0xff,0xff,0xff};
ret=Routon_IC_HL_ReadCard (sid,bid,0x60,pw,da);//讀0扇區0塊的內容
}
}
CloseComm();
}
5.3. 讀取指紋及身份證信息示例(iDR210)
ret = InitComm(1001);
if ( ret ){
ret=IsFingerPrintDevice();
if (ret!=1)
{
sprintf(msg,"設備不支持讀取指紋信息!返回值=%d",ret);
MessageBox(msg,"提示");
return ;
}
ret= Authenticate ();
if (ret){
/*unsigned char unCHMsg[256];
unsigned char ucFPMsg[1024];
int uiFPMsgLen,uiCHMsgLen;
ret = ReadBaseFPMsg(unCHMsg, &uiCHMsgLen,ucFPMsg, &uiFPMsgLen);*/
char name[32]={0};
char Gender[4]={0};
char Folk[4]={0};
char BirthDay[9]={0};
char Code[19]={0};
char Address[71]={0};
char Agency[31]={0};
char ExpireStart[9]={0};
char ExpireEnd[9]={0};
char pucFPMsg[1024]={0};
unsigned int puiFPMsgLen=0;
ret = ReadBaseInfosFPPhoto(name, Gender, Folk, BirthDay, Code, Address, Agency, ExpireStart, ExpireEnd,“C:\\”, pucFPMsg, &puiFPMsgLen);
if (ret!=1)
{
sprintf(msg,"讀指紋信息失敗!返回值=%d",ret);
MessageBox(msg,"提示");
return ;
}
if (uiFPMsgLen<1024)
{
sprintf(msg,"無指紋信息!");
MessageBox(msg,"提示");
}
…
//此處處理指紋及身份證信息
}
}
CloseComm();
5.4. CPU卡操作示例(iDR210)
unsigned char data[1024];
memset(data,0,1024);
int datalen=0;
ret = InitComm(1);//串口1
if ( ret ){
ret=Routon_IC_FindCard();
if (ret!=2)//類型2為CPU卡
{
sprintf(msg,"不是CPU卡!返回值=%d",ret);
MessageBox(msg,"提示");
return ;
}
char apdu[]=” 00A404000E315041592E5359532E4444463031”;
ret=Routon_CPUCard_Active();
if (ret==1){ //激活成功
ret=Routon_APDU(apdu,data,&datalen);//data為16進制值
}
}
CloseComm();
5.5. 外國人居留證操作示例(iDR200/iDR210)
#include “sdtapi.h”
int main()
{
int ret;
int dev;
ret =InitComm (1001);//USB接口, 1-16則為串口號
if ( ret )
{
ret= Authenticate ();
if (ret){
ret= Routon_DecideIDCardType()
if (ret == 100 ){ //身份證卡
//讀取身份證信息
ret = ReadBaseInfos(Name, Gender, Folk, BirthDay, Code, Address, Agency, ExpireStart, ExpireEnd);
}
else if(ret == 101){ //外國人居留證
//讀取外國居留證
ret = Routon_ReadAllForeignBaseInfos(enName, Gender, Code,
Nation, cnName, BirthDay, ExpireStart, ExpireEnd,CardVertion,Agency,CardType,FutureItem);
}
}
}
CloseComm();
return 0;
}
5.6. “部標”設備和HID設備同時連接PC,讀卡示例(iDR210)
#include “sdtapi.h”
int main()
{
int ret;
int index;//輸入的USB設備索引號,“0”部標設備,“1”HID1,“2”HID2
int SDTCount[1];//當前PC連接的部標設備數量
int HIDCount[1];//當前PC連接的HID設備數量
FindAllUSB(SDTCount, HIDCount);
ret=SelectUSB(index);
if ( ret )
{
ret= Authenticate ();
if (ret){
ret= Routon_DecideIDCardType();
if (ret == 100 ){ //身份證卡
//讀取身份證信息
ret = ReadBaseInfos(Name, Gender, Folk, BirthDay, Code, Address, Agency, ExpireStart, ExpireEnd);
}
else if(ret == 101){ //外國人居留證
//讀取外國居留證
ret = Routon_ReadForeignBaseInfosPhoto(enName, Gender, Code, Nation, cnName, BirthDay, ExpireStart, ExpireEnd);
}
}
}
CloseSDTandHIDComm(index);
}
5.7. 外國證居留證生成正反面照片操作示例(iDR210)
#include “sdtapi.h”
int main()
{
int ret;
int dev;
ret =InitComm (1001);//USB接口, 1-16則為串口號
if ( ret )
{
ret= Authenticate ();
if (ret){
ret= Routon_DecideIDCardType()
if (ret == 100 ){ //身份證卡
//讀取身份證信息
ret = ReadBaseInfosPhoto(Name, Gender, Folk, BirthDay, Code, Address, Agency, ExpireStart, ExpireEnd, "D:\\IDtemp");
}
else if(ret == 101){ //外國人居留證
//讀取外國居留證
ret = Routon_ReadForeignBaseInfosPhoto(enName, Gender, Code, Nation, cnName, BirthDay, ExpireStart, ExpireEnd, "D:\\FIDtemp");
}
}
}
CloseComm();
return 0;
}


























售后服務
常見問題
驅動下載
公司簡介
企業文化
組織架構
資質證書

廣州萬特信息科技有限公司
神思身份證閱讀器銷售中心
廣州創芯電子科技有限公司
第二代身份證讀卡器
熵基科技身份證閱讀器銷售中心
新中新身份證閱讀器銷售中心
精倫身份證閱讀器銷售中心
京東商城網店
昌貿CM008U身份證讀卡器
東控智能IDR-100N內置式嵌入式身份證讀卡器
東控智能V-8900人臉識別雙屏一體機
神盾ICR100M身份證讀卡器
信通ST710BM二代居民身份證讀卡器
客服咨詢