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