發(fā)現(xiàn)酒店、網(wǎng)吧、公家單位好多都是使用的這種藍(lán)色的身份證讀取盒子,所以我研究了一下也寫個(gè)Python示例 網(wǎng)上搜了搜關(guān)于這款機(jī)器的SDK,基本上全是C#的帖子 首先,先安裝他們的驅(qū)動(dòng),我使用的是USB驅(qū)動(dòng),在他們官網(wǎng)上下載了動(dòng)態(tài)鏈接庫,實(shí)際上就是使用SynIDCardAPI.dll這個(gè)庫。 下面,我們來調(diào)用一下他們提供的接口(接口文檔就不提供了,可以去他們官網(wǎng)下載后觀摩),下面是我的Python代碼: from ctypes import * #因?yàn)槭褂玫氖荂/C++的庫,所以我們引用ctypes dll = ctypes.windll.LoadLibrary("SynIDCardAPI.dll") #載入庫 iPort = dll.Syn_FindUSBReader() #尋找USB,返回的貌似是什么端口 pucIIN = ctypes.create_string_buffer(128) dll.Syn_StartFindIDCard(iPort, pucIIN, 1) #開始找卡 pucSN = ctypes.create_string_buffer(128) dll.Syn_SelectIDCard(iPort, pucSN, 1) #選擇卡 cPhotopath = ctypes.create_string_buffer(255) dll.Syn_SetPhotoPath(1, cPhotopath) #這一步很重要,他們默認(rèn)把身份證頭像存在了C盤根目錄,導(dǎo)致win7下面調(diào)用會(huì)導(dǎo)致python崩潰,原因是沒有管理員權(quán)限,這里1參數(shù)可以換到當(dāng)前目錄即可 #下面調(diào)用他們的最終讀取函數(shù)Syn_ReadMsg,第三個(gè)參數(shù)是一個(gè)結(jié)構(gòu)體,Python本身沒有C/C++那樣的結(jié)構(gòu)體,但是可以通過ctypes的Structure來解決 class IDCardData(Structure): ('Name', c_char * 32), #姓名 ('Nation', c_char * 20), #民族 ('Born', c_char * 18), #出生日期 ('Address', c_char * 72), #住址 ('IDCardNo', c_char * 38), #身份證號(hào) ('GrantDept', c_char * 32), #發(fā)證機(jī)關(guān) ('UserLifeBegin', c_char * 18), #有效開始日期 ('UserLifeEnd', c_char * 18), #有效截止日期 ('reserved', c_char * 38), #保留 ('PhotoFileName', c_char * 255) #照片路徑 r = dll.Syn_ReadMsg(iPort, 1, byref(data)) reserved = (getattr(data, 'reserved') if getattr(data, 'reserved') != '' else 'None') result = getattr(data, 'Name') + "||" + getattr(data, 'Sex') + "||" + getattr(data, 'Nation') + "||" + getattr(data, 'Born') + "||" + getattr(data, 'Address') + "||" + getattr(data, 'IDCardNo') + "||" + getattr(data, 'GrantDept') + "||" + getattr(data, 'UserLifeBegin') + "||" + getattr(data, 'UserLifeEnd') + "||" + reserved + "||" + getattr(data, 'PhotoFileName') result = result.decode('gbk').encode('utf8') print result #這里就返回的是身份證信息,我這里以雙豎線分隔拼成字符串了
說實(shí)話,他們的接口壓根就沒有考慮什么PHP、Python這類語言,一點(diǎn)都不方便,給C#卻提供了很多示例,真心操蛋! 留帖為了方便我以后查看,也給學(xué)習(xí)Python的童鞋們一個(gè)希望,讀取身份證類似的C/S架構(gòu)軟件也可以使用wxPython進(jìn)行開發(fā)。
|