摘 要:在許多應用系統中,需要輸入用戶的姓名、身份證號等身份證上的信息,為了保證信息輸入的準確性,可以采用身份證閱讀器讀取第二代居民身份證的信息輸入到應用程序中,本文主要探討在PowerBuilder中,神盾ICR-100M身份證閱讀器讀取身份證信息的方法。
關鍵詞:PowerBuilder;身份證閱讀器;身份證信息;ucs_2編碼;GB 2312-80編碼
中圖分類號:TP311.52
許多應用系統中都涉及到錄入身份證信息的問題,如果身份信息錄入不正確或不完整,可能會在應用過程中出現很多問題,比如我院學生收費管理系統在前期版本中,未錄入學生身份證號,設計時是以學號來區(qū)分不同學生。但在其他系統中,比如學生資助的系統中是以身份證號來區(qū)分不同學生,為核對學生收費情況和資助情況造成困難,如果按姓名來進行核對,可能出現重名或者姓名錄入錯誤等情況。為了解決這個問題,就需要在學生收費系統中增加身份證號,但如果用人工錄入身份證號,一是容易出錯,二是效率低下。為了避免錄入的身份證信息出現錯誤和提高工作效率,我們采用了神盾ICR-100M身份證閱讀器讀取身份證信息。
1 實現原理
1.1 神盾ICR-100M身份證閱讀器提供了進行二次開發(fā)的SDK開發(fā)包,主要包括以下文件:termb.h API函數原型定義。termb.lib API函數的VC開發(fā)包。termb.dll API函數的動態(tài)聯接庫。sdtapi.dll termb.dll需要的后臺庫(和termb.dll一起放在當前目錄或系統目錄下)。IDCard.dll termb.dll需要的后臺庫(和termb.dll一起放在當前目錄或系統目錄下)。
1.2 函數列表
int InitComm(int Port) 初始化串口
int InitCommExt() 初始化串口(擴展)
int CloseComm() 關閉串口
int Authenticate() 卡認證
Read_Content(int Active) 讀卡操作,信息文件存儲在應用程序當前目錄下;
int GetSAMID (char * cSAMID) 獲取SAM編號
Int GetPhoto(char * Wlt_File) 獲取bmp照片
1.3 函數調用流程
1.4 文字信息讀取
讀完后,文字信息采用GB 13000的UCS-2進行存儲,各項目分配如下:
2 實現方法
int li_cshdk,li_sq,li_dwj,li_fh
long l_file_length,l_ret
string ls_xm,ls_sfzh,ls_long
li_cshdk=InitComm(1001) //初始化端口
if li_cshdk=1 then
messagebox(\"提示信息\",\"初始化端口成功\")
else
messagebox(\"提示信息\",\"提示信息失敗,檢查硬件連接是否正確。\")
end if
if li_cshdk=1 then //卡認證
li_sq=Authenticate()
if li_sq<>1 then
messagebox(\"提示信息\",\"身份證放置不正確,請重新放置身份證。\")
end if
else
return
end if
if li_sq=1 then //讀卡
li_dwj=Read_Content(1)
if li_dwj<>1 then
messagebox(\"提示信息\",\"讀卡失敗,可能身份證信息已被破壞。\")
end if
else
return
end if
CloseComm()//關閉端口
//打開文件
li_fh=FileOpen(\"wz.txt\",StreamMode!,Read!,lockread?。?/p>
l_file_length=0
IF li_fh <0 THEN
FileClose(li_fh)
RETURN
END IF
//讀文件,將ucs-2編碼轉換為GB2312-80編碼
l_ret=FileRead(li_fh,ls_long)
if l_ret <> -100 then
li_textlen=WideCharToMultiByte(936,0,ls_long,255,ls_rddata,255,ls_tmp,lb_udc)
// ls_rddata保存轉結果
end if
FileClose(li_fh)
3 結束語
在將身份證信息轉換為GB2312-80編碼后根據需要取出所需信息,本文的程序在PB 9.0下調試通過,應用于我院學生收費系統中。
參考文獻:
[1]李勇.PowerBuilder8.0徹底研究[M].北京:中國鐵道出版社.
[2]身份證閱讀器智能接口版SDK使用手冊 V1.30.公安部第一研究所,2007.
作者單位:安順職業(yè)技術學院信息工程系,貴州安順 561000