蘇雙琴,汪一鳴,陳 峰
(1.蘇州大學(xué)電子信息學(xué)院,江蘇 蘇州215021;2.蘇州市輕工業(yè)學(xué)校,江蘇 蘇州 215008;3.蘇州韻語(yǔ)信息科技有限公司,江蘇 蘇州 215002)
隨著辦公自動(dòng)化水平的不斷提高,很多人力資源市場(chǎng)采用了電子信息化辦公平臺(tái),如專用的服務(wù)器、大型LED電子顯示屏、觸摸屏、電腦、打印機(jī)、電話和傳真機(jī)以及招聘信息查詢系統(tǒng)等硬件設(shè)備,還專門(mén)開(kāi)發(fā)了相關(guān)的信息發(fā)布軟件,建立有自己的專用網(wǎng)站,內(nèi)部實(shí)現(xiàn)了局域網(wǎng)的聯(lián)網(wǎng)、對(duì)外開(kāi)通了互聯(lián)網(wǎng),給求職者和用人單位都帶來(lái)了極大的便利。但對(duì)一些低端人力資源市場(chǎng)而言,其特點(diǎn)是用人單位是勞動(dòng)密集型企業(yè),有大量用工需求,而求職人員文化程度相對(duì)較低。這使得一方面由于求職者太多,對(duì)求職登記情況不熟悉,填寫(xiě)求職登記表耗時(shí)費(fèi)力,效率低下,給人力資源市場(chǎng)管理帶來(lái)不便。另一方面由于則求職人員素質(zhì)差異比較大,還有些人甚至連字都不會(huì)寫(xiě),錯(cuò)失了求職的機(jī)會(huì)。
為了改變這種狀況,筆者設(shè)計(jì)了一套身份信息識(shí)別與求職信息錄入系統(tǒng)。進(jìn)場(chǎng)求職人員只需出示身份證,在身份識(shí)別設(shè)備上輕輕一掃,立刻形成一張具有該求職人員基本信息的登記表,求職者隨后在與企業(yè)交流、溝通的過(guò)程中,進(jìn)一步交互式錄入相關(guān)求職信息(包括個(gè)人專長(zhǎng),以往就業(yè)信息以及企業(yè)對(duì)個(gè)人的基本評(píng)價(jià)等),從而形成一張完整的求職登記表。這樣不僅極大方便了求職者,同時(shí),也實(shí)現(xiàn)了無(wú)紙化辦公,人力資源市場(chǎng)本身的工作效率也明顯提高。
通過(guò)采集求職者二代身份證形成個(gè)人基本資料,根據(jù)自動(dòng)下載的企業(yè)招聘信息,配合企業(yè)工作人員的操作,快速形成個(gè)人求職登記電子表格。這就要求該系統(tǒng)具有身份證信息識(shí)別功能,多終端功能、聯(lián)網(wǎng)功能以及網(wǎng)絡(luò)集中管理控制功能。信息錄入系統(tǒng)整體網(wǎng)絡(luò)拓?fù)鋱D如圖1所示,集中控制電腦通過(guò)交換機(jī)或路由器與智能填表裝置網(wǎng)絡(luò)連接,智能填表裝置發(fā)出的檢索請(qǐng)求,由集中控制電腦向若干個(gè)遠(yuǎn)程數(shù)據(jù)服務(wù)器請(qǐng)求檢索,檢索結(jié)果由集中控制電腦匯總后傳輸給智能填表裝置實(shí)現(xiàn)填表錄入。
圖1 信息錄入系統(tǒng)整體網(wǎng)絡(luò)拓?fù)鋱D
智能填表裝置框圖如圖2所示,包括信息處理模塊(S3C2440核心板)、輸入模塊(二代證閱讀器及鍵盤(pán))、輸出模塊(液晶驅(qū)動(dòng)及蜂鳴器)、本地存儲(chǔ)器(SD卡)、數(shù)據(jù)傳輸模塊(10/100M網(wǎng)絡(luò))。其中第二代身份閱讀器讀取用戶身份信息,并將用戶信息傳輸給核心板處理。核心板通過(guò)RS232C電路連接身份證閱讀器[1]。并根據(jù)用戶信息在預(yù)制的電子表格內(nèi)填充用戶信息,然后將電子表格輸出給液晶屏顯示。由用戶通過(guò)鍵盤(pán)輸入填寫(xiě)電子表格中未能實(shí)現(xiàn)智能填表的區(qū)域。信息處理模塊通過(guò)網(wǎng)絡(luò)向集中控制電腦發(fā)出檢索請(qǐng)求,將請(qǐng)求結(jié)果填入表中。核心板將最終的電子表格存儲(chǔ)在SD卡中。蜂鳴器提示用戶操作過(guò)程及結(jié)果。電源及系統(tǒng)控制模塊,向其他電路提供電源管理及電源供應(yīng)。
圖2 智能填表裝置框圖
根據(jù)以上描述,主芯片要求如下:主頻400 M及以上;內(nèi)置TFT驅(qū)動(dòng)電路;UART接口;SD卡接口。本文采用友善之臂的Micro 2440,其資源配置如下:CPU為Samsung S3C2440A,主頻400 MHz;在板64MSDRAM;在板256 MNAND Flash,掉電非易失;在板2MNor Flash,掉電非易失[2],可以滿足系統(tǒng)要求。設(shè)備采用wince操作系統(tǒng),應(yīng)用程序采用EVC編寫(xiě)[1~6]。
本錄入系統(tǒng)整體設(shè)計(jì)比較復(fù)雜,現(xiàn)就其軟件設(shè)計(jì)部分關(guān)于集中管理軟件中多設(shè)備的可靠性及實(shí)時(shí)性進(jìn)行研究。
2.1 關(guān)鍵問(wèn)題
眾所周知,采用總線結(jié)構(gòu)的網(wǎng)絡(luò)上,只要有一個(gè)設(shè)備在發(fā)送數(shù)據(jù),總線的資源就會(huì)被占用。因此,在某一時(shí)刻只允許一臺(tái)設(shè)備發(fā)送數(shù)據(jù),否則所有設(shè)備都無(wú)法通信。以太網(wǎng)采用CSMA/CD解決這個(gè)問(wèn)題。對(duì)于集中控制電腦而言,指定的端口只允許一個(gè)線程接收數(shù)據(jù)。這樣,當(dāng)管理設(shè)備需要與多個(gè)設(shè)備同時(shí)進(jìn)行通信時(shí),實(shí)際在某一時(shí)刻僅僅能與一臺(tái)設(shè)備進(jìn)行信息交互,這就需要建立一個(gè)與多個(gè)設(shè)備通信的機(jī)制。傳統(tǒng)的處理方法是單線程技術(shù),即在接收線程中與一個(gè)設(shè)備的通信有結(jié)果(通信成功或失敗)之后再處理下一個(gè)設(shè)備的通信。由于傳輸中總有收到物理干擾帶來(lái)的誤碼,或者設(shè)備在處理更高級(jí)線程而不能夠立即響應(yīng)的情況,有可能導(dǎo)致通信失敗。
2.2 類多線程技術(shù)
類多線程技術(shù)是一種類似于多線程的技術(shù),使用兩個(gè)線程來(lái)實(shí)現(xiàn)原本需要多個(gè)線程(線程數(shù)量由通信設(shè)備的數(shù)量決定)才能完成的通信,兩個(gè)線程分別是UDP接收線程和定時(shí)器管理線程。技術(shù)的關(guān)鍵在于,使用設(shè)備狀態(tài)變量來(lái)決定在超時(shí)中如何繼續(xù)處理,在定時(shí)器線程中可以讓偶然失敗的通信能繼續(xù)下去。為了解決上述多個(gè)設(shè)備需要同時(shí)通信可能失敗的問(wèn)題,使用類多線程技術(shù),達(dá)到在占用資源最少的情況下,與多個(gè)設(shè)備同時(shí)通信而無(wú)需操作者等待超時(shí)時(shí)間。由于采用了類多線程技術(shù),可以在定時(shí)器處理程序里面,對(duì)通信指令發(fā)出后的時(shí)間間隔進(jìn)行判斷,超過(guò)一定時(shí)間沒(méi)有接收到返回的響應(yīng)幀,采取超時(shí)自動(dòng)重發(fā)命令,減少偶然的干擾導(dǎo)致通信失敗的概率。若多次重發(fā)仍然得不到響應(yīng),則向用戶反饋通信失敗。在發(fā)送多個(gè)數(shù)據(jù)記錄過(guò)程中,為了能夠連續(xù)讀取多個(gè)記錄,給每個(gè)記錄編號(hào),若出現(xiàn)超時(shí)情況,會(huì)重新發(fā)送上一次命令,避免一個(gè)出錯(cuò)所有記錄都要重發(fā),即斷點(diǎn)續(xù)傳,提高了通信效率。
該類多線程技術(shù)由兩個(gè)線程來(lái)實(shí)現(xiàn),一個(gè)是網(wǎng)絡(luò)UDP接收線程,一個(gè)是定時(shí)器線程。實(shí)現(xiàn)機(jī)制如下所述。
(1)設(shè)備結(jié)構(gòu)體定義。每個(gè)設(shè)備所定義的變量使用一個(gè)結(jié)構(gòu)體封裝,然后用該類結(jié)構(gòu)體構(gòu)成的數(shù)組表示所有通信設(shè)備,結(jié)構(gòu)體定義如下:
TSendSessions=record
Status:TSendStatus;//發(fā)送狀態(tài),有空閑等待響應(yīng)成功失敗,記錄命令執(zhí)行狀態(tài)
SendCmd:integer;//記住發(fā)送命令,以便重新發(fā)送
RdZpInfoState:integer;//0-讀入總數(shù)1...n為讀入求職信息數(shù)據(jù)包
TotalZpInfo:integer;//總的數(shù)據(jù)記錄數(shù)量
ThreadTimer:byte;//超時(shí)重新發(fā)送次數(shù),小于最大超時(shí)數(shù)C_SEND_TIMERS
DeviceConnectState:integer;//設(shè)備連接狀態(tài)0-未連接1-連接
DeviceSearchTimes:integer;//搜索設(shè)備,如果超過(guò)3次找不到,認(rèn)為設(shè)備不存在
IPAddress:string;//記錄設(shè)備號(hào)對(duì)應(yīng)的IP地址,以便重新發(fā)送命令
end;
在發(fā)送數(shù)據(jù)時(shí)要準(zhǔn)備好發(fā)送的命令內(nèi)容,設(shè)置超時(shí)重發(fā)次數(shù)變量ThreadTimer為0,用SendCmd保存當(dāng)前發(fā)送的命令字,用Status標(biāo)記為命令發(fā)送狀態(tài),進(jìn)入等待設(shè)備響應(yīng)過(guò)程,為超時(shí)重發(fā)做準(zhǔn)備,然后將命令發(fā)送出去。
(2)兩種情況的處理。接下來(lái)有兩種情況,第一種情況是在超時(shí)時(shí)間到來(lái)之前,接收UDP線程中接收到來(lái)自對(duì)應(yīng)設(shè)備的響應(yīng);第二種情況是超時(shí)。
第一種情況處理很簡(jiǎn)單,流程圖如圖3所示,首先因?yàn)槭盏絹?lái)自設(shè)備的命令,所以可以認(rèn)為設(shè)備是連接的,標(biāo)記設(shè)備連接狀態(tài)為連接,設(shè)置Device Connect State為1,設(shè)置Device Search Times為0。然后根據(jù)協(xié)議命令進(jìn)入不同的處理,將設(shè)備狀態(tài)從等待響應(yīng)變?yōu)槌晒Γǚ乐怪匕l(fā)),最后清零變量Thread Timer。
圖3 UDP接收數(shù)據(jù)線程流程圖
第二種情況是沒(méi)有收到任何來(lái)自設(shè)備的響應(yīng)命令。在定時(shí)器程序中處理,每過(guò)一段時(shí)間檢查每個(gè)設(shè)備的狀態(tài),根據(jù)設(shè)備狀態(tài)判斷是否處在等待命令狀態(tài),流程圖如圖4所示。如果處在等待命令狀態(tài),超時(shí)時(shí)間到了以后將上一次命令重新發(fā)送,然后繼續(xù)等待。如果重發(fā)次數(shù)大于預(yù)設(shè)值,就通過(guò)用戶界面提示,通信失敗需要人工處理。只要有一次成功收到來(lái)自設(shè)備的響應(yīng),通信就會(huì)成功。在請(qǐng)求讀取多個(gè)記錄時(shí),使用Rd Zp Info State變量記錄當(dāng)前的記錄號(hào)碼,使用Total Zp Info保存總的記錄號(hào)碼,這樣就可以在超時(shí)的時(shí)候重新發(fā)送前一個(gè)請(qǐng)求的記錄號(hào),實(shí)現(xiàn)斷點(diǎn)續(xù)傳,提高通信的可靠性。
圖4 定時(shí)器中斷線程流程圖
測(cè)試環(huán)境如圖1所示,集中控制電腦與交換機(jī)連接,交換機(jī)與外網(wǎng)相連,設(shè)備與交換機(jī)連接,測(cè)試10次,每次傳輸數(shù)據(jù)為900個(gè)數(shù)據(jù)包,同時(shí)與10臺(tái)設(shè)備通信。分別使用單線程技術(shù)和類多線程技術(shù)測(cè)試數(shù)據(jù),結(jié)果如表1表2所示。
表1 使用單線程技術(shù)的測(cè)試數(shù)據(jù)
表2 使用類多線程技術(shù)的測(cè)試數(shù)據(jù)
由表1表2比較可以看出,使用本文類多線程技術(shù)后,通信的時(shí)間縮短了,即使增加更多的設(shè)備也是如此,這樣大大節(jié)省了時(shí)間。另外,在測(cè)試過(guò)程中,由于通信都是100%成功,所以采用人工故意斷開(kāi)網(wǎng)線3 s后接通進(jìn)行測(cè)試,采用之前的程序,無(wú)法繼續(xù)通信,必須人工再次讀取數(shù)據(jù);采用此技術(shù)后,軟件會(huì)自動(dòng)重新在原來(lái)基礎(chǔ)上繼續(xù)傳輸,實(shí)現(xiàn)了通信的可靠性和實(shí)時(shí)性。
本系統(tǒng)投入使用后,與預(yù)期效果一致,采用先進(jìn)的嵌入式系統(tǒng)技術(shù)體系,響應(yīng)速度快,體積小,功耗低,系統(tǒng)成熟穩(wěn)定,能滿足人力資源市場(chǎng)信息化發(fā)展需要。為進(jìn)一步提高通信的可靠性和可擴(kuò)展性,可采用自定義的協(xié)議以及CRC校驗(yàn)。
[1]劉 琳,吳國(guó)英,劉小杰,李軼南.第二代居民身份證閱讀器原理與應(yīng)用[J].警察技術(shù),2004,(5):30-32.
[2]廣州友善之臂計(jì)算機(jī)科技有限公司.Micro2440用戶手冊(cè) [K].廣州:廣州友善之臂計(jì)算機(jī)科技有限公司,2009.
[3]周立功,等.ARM&WinCE實(shí)驗(yàn)與實(shí)踐[M].北京:北京航空航天大學(xué)出版社,2007.
[4]汪 兵,等.Windows CE嵌入式高級(jí)編程及其實(shí)例詳解(用C++實(shí)現(xiàn))[M].北京:中國(guó)水利水電出版社,2008.
[5]張冬泉,譚南林.Windows CE開(kāi)發(fā)實(shí)例精粹[M].北京:電子工業(yè)出版社,2008.
[6]張 崳.32位嵌入式系統(tǒng)硬件設(shè)計(jì)與調(diào)試[M].北京:機(jī)械工業(yè)出版社,2005.