在線(xiàn)簽名識別系統的數據采集和USB通信
3.3 上位機應用程序編寫(xiě)
USB應用程序可采用VB編寫(xiě),設計時(shí)把對USB的訪(fǎng)問(wèn)做成動(dòng)態(tài)鏈接庫,這樣可以節省程序、提高程序運行效率。實(shí)際上,只需要告訴VB系統動(dòng)態(tài)鏈接庫文件(DLL)的定位信息和聲明讀寫(xiě)USB端口的接口函數,就可以對USB端口進(jìn)行操作。而在VB中若要訪(fǎng)問(wèn)動(dòng)態(tài)鏈接庫函數則必須把定位信息和函數聲明放在一個(gè)后綴為bas的模塊中。模塊中的聲明代碼如下:
Public Declare Function ReadData Lib " C:\WINDOWS\system32\EasyUSB.dll " - (ByVal pipenum As Integer,recbuffer As Byte,ByVal ilen AsInteger,ByVal waittime As Integer)As Integer
在VB中可以用定時(shí)器控件來(lái)同步接收數據,也可以設置定時(shí)器的Interval屬性,即觸發(fā)定時(shí)器的間隔時(shí)間。當每次觸發(fā)時(shí)間到達時(shí),就可從USB接口接收數據。
簽名的實(shí)時(shí)顯示分為采集坐標的實(shí)時(shí)顯示和簽名筆跡的實(shí)時(shí)顯示,其中采集坐標顯示包含橫縱坐標和壓力坐標的顯示。
簽名坐標的實(shí)時(shí)顯示可以用TextBox文本框控件來(lái)實(shí)現,但要用一個(gè)轉換函數Str ()負責把采集到的整型數據轉換為字符串類(lèi)型,這樣就可以直接在文本框顯示了。
簽名筆跡的實(shí)時(shí)顯示稍微復雜一點(diǎn),其實(shí)現方法是采用畫(huà)線(xiàn)函數法,即當知道了兩個(gè)點(diǎn)時(shí)就可以根據這兩個(gè)點(diǎn)畫(huà)線(xiàn)。每采集并接收到一個(gè)點(diǎn)時(shí),就執行一次畫(huà)線(xiàn)函數,以把當前的點(diǎn)和前一個(gè)點(diǎn)相連。這樣,當你簽名的時(shí)候,畫(huà)線(xiàn)函數就會(huì )把你的書(shū)寫(xiě)筆跡呈現出來(lái)。
在進(jìn)行畫(huà)線(xiàn)時(shí)還要考慮干擾問(wèn)題。由于液晶顯示對簽名采集芯片有一定的影響,因而可能造成采集數據的抖動(dòng),有時(shí)候還會(huì )出現非點(diǎn)(即本次采集到的值與前次和后一次的采集值相差較大),本設計雖然在系統硬件上做了一些抗干擾措施(比如加裝濾波電容等),但效果不是很明顯。
后經(jīng)實(shí)驗發(fā)現,通過(guò)軟件去抖方法可以實(shí)現筆跡的平滑顯示。具體去抖可從以下兩個(gè)方面實(shí)現:第一是把兩點(diǎn)之間的連線(xiàn)改為每四個(gè)點(diǎn)連一次,并把采集到的四個(gè)點(diǎn)的坐標值取平均值,從而緩解坐標值的抖動(dòng);第二是設定一個(gè)域值,當兩個(gè)點(diǎn)之間的坐標絕對值之差不在該域值范圍內時(shí),即判定該點(diǎn)為非點(diǎn),而不對該坐標值進(jìn)行任何操作,直接舍棄。通過(guò)以上兩個(gè)方面的措施可以去掉大多數的非點(diǎn)和抖動(dòng)點(diǎn),使曲線(xiàn)變得更加平滑。
圖5所顯示的是抗干擾處理前后所采集到的簽名,圖中箭頭處即為受干擾的筆劃。
簽名筆跡實(shí)時(shí)顯示的算法流程圖如圖6所示。

圖7給出了VB應用程序下的實(shí)時(shí)顯示界面。

4 結束語(yǔ)
本在線(xiàn)簽名系統使用ADS7846實(shí)現了高速和高精度的數據采集,該芯片不僅能采集簽名的橫縱坐標,還能采集壓力坐標,從而豐富了在線(xiàn)簽名系統的動(dòng)態(tài)簽名信息,為以后的簽名識別提供了更多的判斷依據。本在線(xiàn)簽名識別系統中采用USB接口來(lái)解決動(dòng)態(tài)信息的采集設備和計算機之間的數據通信具有一定的現實(shí)意義。該方案可以準確實(shí)時(shí)地將采集到的簽名數據傳送到計算機。經(jīng)測試,本系統傳輸信息的速度大于1Mbps,能夠很好的滿(mǎn)足系統的要求;同時(shí)由VB編寫(xiě)的人機界面還可實(shí)現簽名的再現。
電容式觸摸屏相關(guān)文章:電容式觸摸屏原理
評論