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

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

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