在線簽名識別系統(tǒng)的數(shù)據(jù)采集和USB通信
3.3 上位機應(yīng)用程序編寫
USB應(yīng)用程序可采用VB編寫,設(shè)計時把對USB的訪問做成動態(tài)鏈接庫,這樣可以節(jié)省程序、提高程序運行效率。實際上,只需要告訴VB系統(tǒng)動態(tài)鏈接庫文件(DLL)的定位信息和聲明讀寫USB端口的接口函數(shù),就可以對USB端口進(jìn)行操作。而在VB中若要訪問動態(tài)鏈接庫函數(shù)則必須把定位信息和函數(shù)聲明放在一個后綴為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ù)據(jù),也可以設(shè)置定時器的Interval屬性,即觸發(fā)定時器的間隔時間。當(dāng)每次觸發(fā)時間到達(dá)時,就可從USB接口接收數(shù)據(jù)。
簽名的實時顯示分為采集坐標(biāo)的實時顯示和簽名筆跡的實時顯示,其中采集坐標(biāo)顯示包含橫縱坐標(biāo)和壓力坐標(biāo)的顯示。
簽名坐標(biāo)的實時顯示可以用TextBox文本框控件來實現(xiàn),但要用一個轉(zhuǎn)換函數(shù)Str ()負(fù)責(zé)把采集到的整型數(shù)據(jù)轉(zhuǎn)換為字符串類型,這樣就可以直接在文本框顯示了。
簽名筆跡的實時顯示稍微復(fù)雜一點,其實現(xiàn)方法是采用畫線函數(shù)法,即當(dāng)知道了兩個點時就可以根據(jù)這兩個點畫線。每采集并接收到一個點時,就執(zhí)行一次畫線函數(shù),以把當(dāng)前的點和前一個點相連。這樣,當(dāng)你簽名的時候,畫線函數(shù)就會把你的書寫筆跡呈現(xiàn)出來。
在進(jìn)行畫線時還要考慮干擾問題。由于液晶顯示對簽名采集芯片有一定的影響,因而可能造成采集數(shù)據(jù)的抖動,有時候還會出現(xiàn)非點(即本次采集到的值與前次和后一次的采集值相差較大),本設(shè)計雖然在系統(tǒng)硬件上做了一些抗干擾措施(比如加裝濾波電容等),但效果不是很明顯。
后經(jīng)實驗發(fā)現(xiàn),通過軟件去抖方法可以實現(xiàn)筆跡的平滑顯示。具體去抖可從以下兩個方面實現(xiàn):第一是把兩點之間的連線改為每四個點連一次,并把采集到的四個點的坐標(biāo)值取平均值,從而緩解坐標(biāo)值的抖動;第二是設(shè)定一個域值,當(dāng)兩個點之間的坐標(biāo)絕對值之差不在該域值范圍內(nèi)時,即判定該點為非點,而不對該坐標(biāo)值進(jìn)行任何操作,直接舍棄。通過以上兩個方面的措施可以去掉大多數(shù)的非點和抖動點,使曲線變得更加平滑。
圖5所顯示的是抗干擾處理前后所采集到的簽名,圖中箭頭處即為受干擾的筆劃。
簽名筆跡實時顯示的算法流程圖如圖6所示。
圖7給出了VB應(yīng)用程序下的實時顯示界面。
4 結(jié)束語
本在線簽名系統(tǒng)使用ADS7846實現(xiàn)了高速和高精度的數(shù)據(jù)采集,該芯片不僅能采集簽名的橫縱坐標(biāo),還能采集壓力坐標(biāo),從而豐富了在線簽名系統(tǒng)的動態(tài)簽名信息,為以后的簽名識別提供了更多的判斷依據(jù)。本在線簽名識別系統(tǒng)中采用USB接口來解決動態(tài)信息的采集設(shè)備和計算機之間的數(shù)據(jù)通信具有一定的現(xiàn)實意義。該方案可以準(zhǔn)確實時地將采集到的簽名數(shù)據(jù)傳送到計算機。經(jīng)測試,本系統(tǒng)傳輸信息的速度大于1Mbps,能夠很好的滿足系統(tǒng)的要求;同時由VB編寫的人機界面還可實現(xiàn)簽名的再現(xiàn)。
電容式觸摸屏相關(guān)文章:電容式觸摸屏原理
評論